如何在laravel 3中应用条件与关系?

时间:2013-01-06 17:14:47

标签: php orm where laravel laravel-3

我在laravel,页面和内容中有一对对象。

我已经设置了一个关系函数,包括,其中包含基于page_id的内容。

我想应用其他条件,例如删除的位置 - 0,以及日期在某些范围内的情况,我知道如何应用条件并设置这些字段。

我无法理解的是如何应用额外条件以及匹配关系字段。

有人可以帮我吗?

2 个答案:

答案 0 :(得分:3)

在模型中定义关系是您需要对模型本身进行的所有操作。但是,您可以向模型添加静态函数,以获取包含所需信息的数据。

页面模型方法示例:

class Page extends Eloquent {

    public function contents()    
    {
        return $this->has_many('Content');
    }

    // Return all content that has not been marked as
    // deleted in the database
    public static function with_contents($id)
    {
        return Page::find($id)->contents()
                              ->where_null('deleted')
                              ->get();
    }
}

此示例假定contents表中的deleted字段为null,除非将其删除,在这种情况下它将具有任何值。

使用你只需使用

$page = Page::with_contents('1');

您可以根据需要创建任意数量的静态辅助方法,或者根据需要为一个方法添加任意数量的条件,然后使用新的静态方法检索数据。

答案 1 :(得分:0)

我认为这可能是你正在寻找的东西

http://doginthehat.com.au/2012/06/adding-conditions-to-relationships-in-laravel/

class User extends Eloquent {

    public function meta()
     {
          return $this->has_many('Meta','target_id')
                      ->where('target_type','=',$this->table());
     }

}