如何在关系调用中使用laravel 5.4本地范围?

时间:2017-05-21 12:19:21

标签: php laravel laravel-5 laravel-5.4

我在我的项目laravel 5.4中使用并且有2个模型,第一个模型是Group,第二个模型是ist Ticket。

在模型组中,我有以下关系:

public function tickets() {
 return $this->hasMany('App\Models\Ticket', 'group_id');
}

在表格票证(模型票证)中,我有一个名为"打开"的bool字段,以及本地范围:

public function scopeOpen($query) {
   return $query->where('open', 1);
}

如何使用以下关系进行过滤:$group->tickets->open,我有

3 个答案:

答案 0 :(得分:2)

您可以这样定义关系:

public function ticketsOpen()
{
   return $this->tickets()->open();
}

然后按如下方式使用它:

$group->ticketsOpen;

答案 1 :(得分:0)

试试这个:

Group::with('tickets')->open()->get();

答案 2 :(得分:0)

有几种方法可以做到这一点。

将此关系添加到组模型

public function openTickets()
{
    return $this->tickets()->open();
}

像这样访问打开的门票

$group->openTickets

或者在获取结果时过滤票证。

$group = Group::with(['tickets' => function ($query) {
    $query->open();
}])->get();

访问的故障单将应用open范围。

$group->tickets