模型中的关系实例在哪里

时间:2019-02-07 19:27:01

标签: laravel laravel-5

我遇到以下问题,我想定义一个特定的属性,而不是每次都通过控制器查询它。但是目前,我不确定该去哪里,因为“哪里不适合收藏”。

当前我的模型属性如下:

public function getPrimaryBillingContactAttribute(){
  $primaryBillingContact = $this->contacts->whereHas('contactType', function ($query) {
      $query->where('id', '=', '2');
  })->first();
  return $primaryBillingContact;
}

如有必要,我会仔细研究控制器,只是希望为客户模型定义一个有效的全局属性。

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为全局变量不是正确的方法,因为您目前无法在查询中执行此操作。但是为了方便起见,我将whereHas转换为具有相同功能的收集方法,因为这似乎是您的主要问题,应该使属性getter起作用。

$this->contacts->filter(function (Contact $contact) {
    return $contact->contactType->id === 2;
})->first();

基本上在一个条件下循环遍历所有联系人,该条件只是返回ID为2的联系人类型的联系人。然后取第一个,就像whereHas一样。我希望这足以帮助您前进。