我遇到以下问题,我想定义一个特定的属性,而不是每次都通过控制器查询它。但是目前,我不确定该去哪里,因为“哪里不适合收藏”。
当前我的模型属性如下:
public function getPrimaryBillingContactAttribute(){
$primaryBillingContact = $this->contacts->whereHas('contactType', function ($query) {
$query->where('id', '=', '2');
})->first();
return $primaryBillingContact;
}
如有必要,我会仔细研究控制器,只是希望为客户模型定义一个有效的全局属性。
谢谢!
答案 0 :(得分:0)
我认为全局变量不是正确的方法,因为您目前无法在查询中执行此操作。但是为了方便起见,我将whereHas转换为具有相同功能的收集方法,因为这似乎是您的主要问题,应该使属性getter起作用。
$this->contacts->filter(function (Contact $contact) {
return $contact->contactType->id === 2;
})->first();
基本上在一个条件下循环遍历所有联系人,该条件只是返回ID为2的联系人类型的联系人。然后取第一个,就像whereHas一样。我希望这足以帮助您前进。