Laravel 雄辩加入最后一条记录
Posted
技术标签:
【中文标题】Laravel 雄辩加入最后一条记录【英文标题】:Laravel eloquent join with last record 【发布时间】:2021-05-07 14:51:44 【问题描述】:我有 4 个表:sales、sales_details、products & price。 对于每个销售,我都有详细信息,详细信息表包含与产品的关系,并且每个产品都有许多价格(常规、销售)。
销售 ->(有很多)销售详情 ->(每个销售详情都有一个)产品 ->(有很多)价格。
我想在 jquery 数据表中显示选定的销售: product_name, (last) sale_price, (last) regular_price
-------------------------
- sales -
-------------------------
- id | int -
- name | varchar -
- created_at | datetime -
- updated_at | datetime -
-------------------------
-------------------------
- sales_details -
-------------------------
- id | int -
- sale_id | int -
- product_id | int -
- created_at | datetime -
- updated_at | datetime -
-------------------------
-------------------------
- products -
-------------------------
- id | int -
- name | varchar -
- created_at | datetime -
- updated_at | datetime -
-------------------------
----------------------------
- prices -
----------------------------
- id | int -
- product_id | int -
- sale_price | int -
- regular_price | int -
- created_at | datetime -
- updated_at | datetime -
-----------------------------
【问题讨论】:
【参考方案1】:我找到了这个解决方案,它对我有用:
$lists = Product::addSelect([
'sale_price' => Price::select('sale_price')->whereColumn('product_id', 'products.id')->orderBy('id', 'desc')->limit(1),
'regular_price' => Price::select('regular_price')->whereColumn('product_id', 'products.id')->orderBy('id', 'desc')->limit(1),
'sales.id as sale_id',
'sales.name as sale_name',
'sales.active as sale_active',
'sales.start as sale_start',
'sales.end as sale_end',
'sale_details.id as sale_details_id',
'sale_details.active as sale_details_active',
'products.id as product_id',
'products.name as product_name',
'products.slug as product_slug',
\DB::raw("CONCAT(products.name, ' - ', products.slug) as product"),
])
->leftjoin('sale_details', 'sale_details.product_id', '=', 'products.id')
->leftjoin('sales', 'sales.id', '=', 'sale_details.sale_id')
->where('sales.id', '=', $id);
$datatables = DataTables::of($lists);
return $datatables->make(true);
【讨论】:
以上是关于Laravel 雄辩加入最后一条记录的主要内容,如果未能解决你的问题,请参考以下文章
Laravel orderby 加入 2 个没有雄辩关系的表