Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过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