ORM预加载时如何orderBy和Limit

我有Model
Position , Block , Nodes

Position --> hasMany --> Block
Block --> hasMany --> Nodes

我想要查找Nodes, 按 ID desc排序, Limit 6条

Position::with(['block.nodes']);

我想要查找 position 里面的 block, 对应的 node , 但是 node 要按 id 排序,limit 6 条

==================UPdate===============
好像不合理....

看来只能预加载一个block, 在查询nodes

JellyBool

你这样试试:

with(['block.nodes' => function ($query) {
                $query->latest()->limit(6);
            }])
Power
Position::with([
    		'block' => function ($query) {
    			$query->with('nodes')
    				  ->limit(6)
    				  ->orderBy('id', 'desc')

    		}
    	])
    	->select();

是不是这个意思

Power

应该在深入一层写orderBy,没理解错的话应该可以

Position::with([
            'block' => function ($query) {
                $query->with([
                	'nodes' => function ($query) {
                		$query->limit(6)->orderBy('id', 'desc');
                	}
                ]);
            }
        ])
        ->select();
RJustice 回复 Power

我试试…好像有点意思的