Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
3年前关闭。
我正在尝试创建一个在线目录,例如,人们可以在该目录中搜索并找到具有特定类型的所有外卖食品。例如:
“印度人”,
“中文”
等等..
我有3张桌子:
商业
标签
商业标签
我的模型如下:
问题是,每当我进行搜索并尝试执行
所以我的问题是这样的:
我在表内存储了超过1万行数据。该表分为三个“业务”,“标签”,“业务标签”。上面的过程需要很长时间才能完成,可能是因为我使用了
这可能吗?
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
3年前关闭。
我正在尝试创建一个在线目录,例如,人们可以在该目录中搜索并找到具有特定类型的所有外卖食品。例如:
“印度人”,
“中文”
等等..
我有3张桌子:
商业
标签
商业标签
我的模型如下:
class Business extends Model
{
protected $table = 'businesses';
protected $fillable = [
'business_name', 'postcode'
];
public function tags()
{
return $this->belongsToMany('App\Tags');
}
}
问题是,每当我进行搜索并尝试执行
whereIn
时,问题就是需要永久加载,实际上甚至没有加载。例如:$business = Business::whereHas('tags', function($tag) use ($request) {
if($request->get('terms'))
{
$tag->whereIn('tags.name', ['chinese']);
}
})->get();
所以我的问题是这样的:
我在表内存储了超过1万行数据。该表分为三个“业务”,“标签”,“业务标签”。上面的过程需要很长时间才能完成,可能是因为我使用了
whereHas('tags')
和whereIn
,因此,如何使用以下语法:$business = Business::where( function ($business) use ($request) {
// Search for businesses with a specific tag, passed from request
});
这可能吗?
最佳答案
我只是在这里疯狂地猜测,但是尝试将条件拉到函数之外,并且不要指定表的名称:
if($request->get('terms'))
{
$business = Business::whereHas('tags', function($tag) use ($request) {
$tag->whereIn('name', ['chinese']);
})->get();
}
关于mysql - Laravel 5 Eloquent -联接表上的whereIn ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37546488/
10-10 11:47