我通读了锂\数据\模型\查询,但没有看到任何连接示例。
问问题
1575 次
2 回答
5
有多种方法可以与 Lithium 执行连接。
- Lithium 将为您处理已定义关系的连接(手册中的示例)。
join()
您可以使用该方法将连接添加到现有的 Query 对象(请参阅API))。- 您可以使用 key 将一组 Query 对象传递给查找器
joins
。 - 您可以将 SQL 直接传递给使用
Connection->read()
.
其他方法都有很好的文档记录,所以我将给出一个将 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 之类的东西。
更新:删除了已被链接顶起的链接。
于 2012-02-25T07:31:02.870 回答
1
如果您建立了关系(使用 hasOne、hasMany 或 belongsTo),您可以通过在调用with
选项中提供一个键来获取相关数据。find
像这样:
$categories = Categories::find('all', array(
'with' => 'Products'
));
查看有关关系的手册章节以获取更多详细信息。
于 2012-02-22T17:16:29.893 回答