Laravel 雄辩的';带();只有一张唱片?

Laravel 雄辩的';带();只有一张唱片?,laravel,eloquent,Laravel,Eloquent,我在两个表之间有一个多对一的关系,但是如何使用“with()”方法只引入一个关联的记录,而不是全部记录?(例如,其日期最接近当前日期的)?有一个->first()方法。这只会给你第一个结果。这将替换->get() 您可以在with()方法上使用闭包来查询关系 $users->with(['address' => function($q) use ($someVariable) { $q->where('zip', '=', $someVariable); }); 您可

我在两个表之间有一个多对一的关系,但是如何使用“with()”方法只引入一个关联的记录,而不是全部记录?(例如,其日期最接近当前日期的)?

有一个
->first()
方法。这只会给你第一个结果。这将替换
->get()


您可以在
with()方法上使用闭包来查询关系

$users->with(['address' => function($q) use ($someVariable) {
    $q->where('zip', '=', $someVariable);
});
您可以按以下方式使用
with()
方法

$user->with(['address'])->findWhere(['zip'=>$someVariable]);

对,但是我想让get()作为主查询,但是我想with()只返回一个。好的,这在你的问题中并不清楚。就像@Jeemuso解释的那样,闭包是最好的选择。太好了——我可以将子查询限制为一个结果吗?老实说,我从未尝试过,但我想你可以将所有常用方法链接到闭包中的查询上。如果无法限制查询中的结果,可以对其排序,然后从返回的集合中选择第一个。只需测试它,first()在子查询中工作:)谢谢