我通读了锂\ data \ model \ query,但我没有看到任何连接的例子。
答案 0 :(得分:5)
有多种方法可以与Lithium进行连接。
join()
方法向现有Query对象添加联接(请参阅joins
将查询对象数组传递给查找程序。Connection->read()
直接将SQL传递给连接。其他方法的记录相当合理,因此我将举例说明将Query对象传递给finder。
$fields = array('id', 'name', 'slug');
$joins = array();
$joins[] = new Query(array(
'source' => 'client_tests',
'constraint' => array('Test.id' => 'client_tests.test_id'),
));
$conditions['client_id'] = $this->data['client_id'];
$tests = Test::all(array(
'conditions' => $conditions,
'fields' => $fields,
'joins' => $joins
));
source
是您要加入的表格,constraint
是加入条件。 Lithium将查找表别名为模型的名称,因此在约束中使用它。然后,您可以将连接传递给任何查找器以及您想要的任何其他参数。
请注意,在编写本文时,联接(和关系)仅适用于关系数据库,而不适用于MongoDB的DBRef。
更新:删除了已链接的链接。
答案 1 :(得分:1)
如果您设置了关系(使用hasOne,hasMany或belongsTo),则可以通过在with
电话的选项中提供find
密钥来获取相关数据。
像这样:
$categories = Categories::find('all', array(
'with' => 'Products'
));
查看manual chapter on Relationships了解更多详情。