我有一個名為 User 的模型,它與訂單有一對多的關系
我嘗試在用戶模型中添加
public function firstOrderDate(){
return $this->hasOne(Order::class)->oldest();
}
我的查詢
User::whereHas('firstOrderDate')->with('firstOrderDate')->get()
它正在回傳 Whole Order 模型我什至嘗試添加 select('date') 它現在回傳 null
uj5u.com熱心網友回復:
您可以通過為第一個訂單創建關系并為 first_order 日期創建訪問器來做到這一點
public function firstOrder(){
return $this->hasOne(Order::class)->oldestOfMany();
}
public function getFirstOrderDateAttribute($value){
!empty($this->firstOrder) ? $this->firstOrder->created_at : '';
}
您的查詢將是:
User::whereHas('firstOrder')->selectRaw('users.*, "" as first_order_date')->get();
uj5u.com熱心網友回復:
它正在回傳整個訂單模型我什至嘗試添加 select('date') 它現在回傳 null 以正常作業關系需要選擇關系鍵
User::whereHas('firstOrderDate')->with(['firstOrderDate' => function($q) {
$q->select('user_id', 'date_field');
})->get()
那么你會得到縮小Order
的模型,只有這樣的選定欄位
{
'id': 1,
// other fields
'firstOrderDate': {
'user_id': 1,
'date_field': '1970-01-01 00:00:00'
}
}
uj5u.com熱心網友回復:
這可以完成這項作業(沒有測驗它):
public function firstOrderDate(){
return $this->hasMany(Order::class)->oldest()->first()->firstOrderDate;
}
你說,你和訂單表是一對多的關系,所以使用hasMany,先按最舊排序,回傳第一個Model,得到屬性'firstOrderDate'。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/476996.html