如何使用锂电模型执行连接?

时间:2012-02-22 08:01:40

标签: lithium

我通读了锂\ data \ model \ query,但我没有看到任何连接的例子。

2 个答案:

答案 0 :(得分:5)

有多种方法可以与Lithium进行连接。

  1. Lithium将为您定义关系(examples in the manual)。
  2. 处理联接
  3. 您可以使用join()方法向现有Query对象添加联接(请参阅 API )。
  4. 您可以使用键joins将查询对象数组传递给查找程序。
  5. 您可以使用Connection->read()直接将SQL传递给连接。
  6. 其他方法的记录相当合理,因此我将举例说明将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了解更多详情。