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

我有一个产品表,还有一个产品移动表(加法、减法)和这些移动的作者表。 我想在雄辩的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();
我得到了所有相关的模型(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查询生成器。。。无论如何,非常感谢。虽然你提供的链接没有打开,但是你的回答解决了我的问题。