我需要從資料庫中獲取最新的活動,并按created_at進行排序。
有一個orders的資料庫表,它有一個shop_id,還有一個collected_birthdays的資料庫表,它也有一個shop_id的共性。
如何獲得最新的orders和collected_birthdays,它有相同的shop_id,并取5條最新記錄?
任務是向用戶顯示這兩個資料庫表的最新記錄,在未來,將有更多的表,我需要顯示并獲得最新的5條記錄。
目前,我發現它是這樣作業的:
$shop = Shop::FindOrFail(1)。
$orders = $shop->orders()-> orderBy('created_at', 'DESC')-> limit(5)-> get();
$collectedBirthdays = $shop-> collectedBirthdays()-> orderBy('created_at', 'DESC')->limit(5)->get();
$latestActivity = $orders->merge($collectedBirthdays)-> sortByDesc('created_at')->take(5)。
這并不是最好的解決方案,但卻使其發揮作用。
uj5u.com熱心網友回復:
你可以使用DB::raw()。它將采取原始的查詢,并給你的reault.
你可以使用DB::raw()。
$data = DB::raw(
'Select o.shop_id, o。 created_at, cb.shop_id, cb.created_at。
From orders as o
Inner Join collected_birthdays as cb on cb. shop_id = o.shop_id.
Order By o. created_at DESC -- 或使用cb.created_at。
Limit 5;'
)->get();
uj5u.com熱心網友回復:
你可以在eloquent中使用take函式,做這樣的事情:
Shop::join('orders', 'orders。 shop_id', '=', ' shops. id')->orderBy('orders。 created_at', 'DESC')->take(5)->get()
Shop::joinRelationship('orders')->orderBy('orders. created_at', 'DESC')->take(5)->get()。
鏈接到軟體包。https://github.com/kirschbaum-development/eloquent-power-joins
這也可以通過使用paginate()來實作
。uj5u.com熱心網友回復:
如果你想獲得多個資料庫的關系表,只要把 protected $connection在模型類中
class 類別 extends Eloquent
{
protected $connection= 'second_db_connection';
protected $table = 'categories';
}
class Company extends Eloquent{
protected $connection= 'first_db_connection';
protected $table = 'company';
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/320605.html
標籤:
