Orm 拉雷维尔雄辩的相关关系仅为第一次记录
我有一个产品表,还有一个产品移动表(加法、减法)和这些移动的作者表。 我想在雄辩的ORM中得到最后一个动作的所有产品 我试过Orm 拉雷维尔雄辩的相关关系仅为第一次记录,orm,eloquent,relationship,record,Orm,Eloquent,Relationship,Record,我有一个产品表,还有一个产品移动表(加法、减法)和这些移动的作者表。 我想在雄辩的ORM中得到最后一个动作的所有产品 我试过 $products = Product::with( array ( 'movs' => function ( $query ) { $query->orderBy( 'id', 'dsc' )->with('author')->firs
$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();
我得到了所有相关的模型(MOV和作者)。。。有没有什么方法可以让它变得雄辩或者我必须使用查询生成器。。。如果是的话。。。怎么做
提前谢谢你。好吧。。。不可能建立与雄辩的。。。无法使用查询生成器生成(使用db raw时出错),因此。。。在使用mysql和DB::select构建的最后 这句话的意思是选择最后一个动作的产品和动作的作者。(如果不是移动,则为空) 依赖于最后一个id而不是日期的最后一个移动
$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);
您必须创建一个新的关系,即hasOne而不是hasMany 这就是解决方案:
将此副本读给:你好,Jarek。。。谢谢你的信息,但这不是我想要的。。。我不想用一个只在一点上需要的函数加载模型。而最新的方法并没有给出准确的最后记录。。。因为当时我不信任你。。我相信按id排序。它不是重复的Yasen,因为我在问是否有某种方法可以只构建雄辩的句子(不是模型函数)或db查询生成器。。。无论如何,非常感谢。虽然你提供的链接没有打开,但是你的回答解决了我的问题。