Php 如何限制where has query laravel中的数据数量

Php 如何限制where has query laravel中的数据数量,php,laravel,Php,Laravel,我有一个这样的疑问 $data=City::with('hotel')->或wherehas('hotel',函数($query)use($user\u input){ //这里我想把这个结果限制在5 $query->where('name'、'LIKE'、'%'。$user\u input'%')->take(5); //$query->take(5);我也尝试过这个 })->orWhere('name','LIKE','%.$user_input'%')->get(); 在whereHas

我有一个这样的疑问

$data=City::with('hotel')->或wherehas('hotel',函数($query)use($user\u input){
//这里我想把这个结果限制在5
$query->where('name'、'LIKE'、'%'。$user\u input'%')->take(5);
//$query->take(5);我也尝试过这个
})->orWhere('name','LIKE','%.$user_input'%')->get();

whereHas
子句中,我有一个查询,我想限制为5,现在我尝试
limit
take
,但之后没有运气
where
什么都不起作用,我不知道为什么您可以通过()将查询传递到
->查询生成器方法:

$data = City::with(['hotel' => function($query) use ($user_input) {
    $query->where('name', 'LIKE', '%' . $user_input . '%')->limit(5);
}])
->where('name', 'LIKE', '%' . $user_input . '%')
->get();
这将获取与具有用户输入的城市关联的所有酒店,其中城市包含用户输入


请注意,此处未使用
->或where()

您可以将查询传递到
->with()
查询生成器方法:

$data = City::with(['hotel' => function($query) use ($user_input) {
    $query->where('name', 'LIKE', '%' . $user_input . '%')->limit(5);
}])
->where('name', 'LIKE', '%' . $user_input . '%')
->get();
这将获取与具有用户输入的城市关联的所有酒店,其中城市包含用户输入


注意这里没有使用
->或where()

我想你拼写不正确,可能是@KoalaYeung的重复。我不想使用连接。如果可能的话。为了澄清,你想限制有5家或更少酒店的城市,输入名称吗?或者,您是否尝试最多返回5家酒店,其中包含输入的酒店名称?这是一个搜索,我想搜索所有城市和酒店,而不是包含名称
la
,例如,但由于酒店数量太多,我想将酒店限制在某个CAP范围内,我认为您拼写错误,@KoalaYeung可能是重复的。如果可能的话,我不想使用连接。为了清楚起见,您是否想限制拥有5家或更少酒店的城市使用输入的名称?或者,您是否试图最多返回5家酒店,其中城市包含输入的酒店名称?这是一个搜索,我想搜索所有城市和酒店,而不是包含名称
la
,例如,但由于酒店数量太多,我想将酒店限制在某个上限。还有一件事是,如果用户搜索
酒店宫殿
如果该城市不存在,而该城市将不存在,则应自行归还酒店。我不会有问题的??你是对的,你需要确定这个功能是搜索酒店还是搜索城市。这两个功能都需要一个不同的查询,可能是两个查询之间的一个条件,以检查是否有一个城市有酒店,如果没有,使用用户输入搜索一个城市,若找不到,则搜索失败。你想让我补充一下这个答案吗?还有一件事,如果用户搜索
酒店宫殿
,如果城市不存在,它应该返回它自己的酒店。我不会有问题的??你是对的,你需要确定这个功能是搜索酒店还是搜索城市。这两个功能都需要一个不同的查询,可能是两个查询之间的一个条件,以检查是否有一个城市有酒店,如果没有,使用用户输入搜索一个城市,若找不到,则搜索失败。你想让我补充一下这个答案吗?