我有一個模型:
class DistributorContacts extends Model
{
public function contacts()
{
return $this->belongsToMany(Contacts::class);
}
}
我這樣使用:
$distributors = DistributorContacts::with("contracts")->whereIn("user_id", $this->id)->get();
問題是我只需要從"contracts"按日期排序中獲取一行。
怎么做?
uj5u.com熱心網友回復:
將查詢添加到函式。
$distributors = DistributorContacts::with([
'contacts' => function($query) {
$query->orderBy('created_at', 'DESC')->limit(1);
}
])->whereIn("user_id", $this->id)->get();
uj5u.com熱心網友回復:
如果您只需要從按日期排序的“合同”中獲取一行。
您可以使用一對多關系。所以
class DistributorContacts extends Model
{
/**
* Get the DistributorContact's most recent Contacts.
*/
public function latestContacts()
{
return $this->belongsToMany(Contacts::class)->latestOfMany();
}
/**
* Get the DistributorContact's oldest Contacts.
*/
public function oldestContacts()
{
return $this->belongsToMany(Contacts::class)->oldestOfMany();
}
}
所以在查詢時你可以做這樣的事情。
對于最新的聯系
$distributors = DistributorContacts::with("latestContacts")->whereIn("user_id", $this->id)->get();
對于最舊的聯系人
$distributors = DistributorContacts::with("oldestContacts")->whereIn("user_id", $this->id)->get();
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/391965.html
標籤:拉拉维尔
上一篇:Laravellivewire表單不允許只從評論中輸入,需要兩者或單獨的影像
下一篇:有條件選擇提供者Laravel
