我设置了简单的关联,比如,一个作者有很多书,一本书属于一个作者。我的文件如下。
<?php
class Author extends AppModel
{
var $name = 'Author';
var $hasMany = 'Book';
}
?>
<?php
class Book extends AppModel
{ var $name = 'Book';
var $belongsTo = 'Author';
}
?>
<?php
class AuthorsController extends AppController {
var $name = 'Authors';
public function index(){
$authors=$this->Author->find('all');
pr($authors);die;
}
}
?>
当我写公关(作者);它打印authors表的所有数据。
Array
(
[0] => Array
(
[Author] => Array
(
[id] => 1
[name] => Jack
[email] => test@test.com
[website] => www.Jack.com
)
[Book] => Array
(
[0] => Array
(
[id] => 1
[isbn] => a12sdsdsd
[title] => Book One
[description] => Description One
[author_id] => 1
)
[1] => Array
(
[id] => 2
[isbn] => fgg234234
[title] => Book Two
[description] => Description Two
[author_id] => 1
)
)
)
[1] => Array
(
[Author] => Array
(
[id] => 2
[name] => Ron
[email] => demo@demo.com
[website] => www.Ron.com
)
[Book] => Array
(
)
)
)
正如你所见,id:2的作者(罗恩)没有书。所以Book数组是空的。我想要的是只获取那些拥有任何书籍的作者(这里只返回author Jack数据)。如何实现这一点?我在以下网站上阅读了关于可包含行为的内容:
http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html
但没有这样的选择来实现这一点。任何帮助都将不胜感激。
提前谢谢!
实现一个计数器缓存,这样你就可以得到作者表中的书籍数量,然后你可以简单地通过这个条件(模型代码)找到:
array($this->alias . '.book_count > 0');
计数器缓存消除了在SQL(慢速)中进行子选择的需要,这将对缓慢且不准确的结果进行计数或过滤。
我有一个类似的问题,这是我解决它的方式,它很脏,但我在CakePHP1.3中找不到更好的解决方案
你也可以试着这样做-
//Inside model
$authors = $this->find( 'all', array(
'fields' => $fields,
'conditions' => $conditions,
'order' => 'id asc',
'contain'=>array(
'Book' => array(
'conditions'=> $bookConditions,
),
)
)
);
//We don't want the results without books
foreach($authors as $index => $author){
if( ( !$author['Book'] ) ){
unset($authors[$index]);
}
}
return $authors;
问题内容: 最初,我一直在尝试获取父母的名单以及每个父母的一个最近的孩子。我已经知道如何使用以下查询 但是问题是,结果不包括没有孩子的父母。添加也无济于事。所以我想我可以对所有没有孩子的父母进行查询,然后将这两个查询合并为一个查询。但是我在建立这样的查询时遇到了麻烦。将不胜感激任何建议。 问题答案: 这是您的查询:
我一直在将代码从JIT转换到D3,并使用树布局。我已从中复制了代码http://mbostock.github.com/d3/talk/20111018/tree.html使用我的树数据,但我想做更多。 在我的例子中,我想创建子节点,这些子节点合并回一个较低级别的父节点,我意识到这更像是一个有向图结构,但是希望树能够适应这一点(即注意子节点之间的公共id应该合并)。 因此,基本上,一棵树在从父母到
问题内容: 我不断收到错误: “路由器”可能只有一个子元素 使用react-router时。 我似乎无法弄清楚为什么它不起作用,因为它与示例中显示的代码完全一样:快速入门 这是我的代码: 感谢您的帮助 问题答案: 您必须将您的换行到(或)中。 应该 jsfiddle / webpackbin
问题内容: 我在 MySQL中* 有如下的 注释 表: * 用户可以添加 新的 注释,因为它们不是其他注释的子对象,所以将没有parent_id。用户还可以 回复 通过先前方法添加的评论,因此它们是主要评论的子级,例如在第二层级上。该 PARENT_ID 列表示父评论的ID,如果存在的话。如果注释没有父母,则默认 parent_id 为-1。 话虽如此,我想查询表中的所有注释,每个父项后跟其子级,
实现一对多关系并选择父项和子项我有一个关系,我想进行查询(选择*) 文件夹。JAVA 作者。JAVA 我的请求: 我得到了这样的结果: 我的代码有什么问题?什么是问题,当我执行查询我得到了这个结果...我想得到这个结果
d3.js树形布局是一个很棒的工具,但是它默认只允许孩子有一个单亲。我希望能够让孩子们有不止一个父母。我对树的默认行为提供的节点位置很满意。我想要的只是在默认树被计算出来之后,在没有孩子的父母和现有的孩子之间画出额外的对角线链接。我的脚本目前看起来像这样: 我试图使用根对象将父节点的子节点复制到无子节点,但无济于事(根对象的结构对我来说非常晦涩难懂)。 感谢任何帮助。 PS :我知道一个类似的问题