我有一张桌子上有产品,另一张桌子上有产品的动作(加法,减法)和这些动作的作者表。 我想在Eloquent ORM中获得最后一个动作的所有产品 我试过......
$products = Product::with( array
(
'movs' => function ( $query )
{
$query->orderBy( 'id', 'dsc' )->with('author')->first();
}
) )->get();
但只获得一个归零的movs数组。
但是当我做的时候
$products = Product::with( array
(
'movs' => function ( $query )
{
$query->orderBy( 'id', 'dsc' )->with('author');
}
) )->get();
我得到所有相关的相关模型(movs和authors)...有没有办法在Eloquent中获得这个或者我与查询构建器有关...如果是这样......怎么样?
提前谢谢你。
答案 0 :(得分:0)
嗯......不可能用Eloquent构建......不可能使用查询构建器构建(使用db raw时出错)所以......最后用mysql和DB构建:: select
句子说选择最后一次运动的产品和运动的作者。 (如果没有动作则为空)
依赖最后一次移动而不是最后一次移动
$mq = "select *
from products
left join
(
select concat (users.first_name,' ', users.last_name) as author,
from users
join (
select *
from movs
join (
select max(movs.id) as id
from movs
group by product_id
) as movsids
on (movsids.id = movs.id)
)
as movuser
on movuser.author_id = users.id
)
as last_movs
on products.id = last_movs.product_id";
return DB::select($mq);
答案 1 :(得分:0)
您必须创建一个新的关系,即hasOne而不是hasMany。
这是解决方案: http://alexkaye.co.uk/2015/01/04/eloquent-get-first-last-related-row/