Laravel 中的急切负载约束过滤器问题

Posted

技术标签:

【中文标题】Laravel 中的急切负载约束过滤器问题【英文标题】:Eager Load Constraints Filter issue in Laravel 【发布时间】:2015-01-31 16:24:06 【问题描述】:

我无法使用Eager Load Constraints 在users 表中过滤groups 表相对于username 的内容

public function username()

    return $this->belongsTo('User','fk_users_id')->select(['id','username']);

我尝试使用下面的代码,但它只过滤 users 数据而不是 groups 数据

$groups     =   Groups::with(array('username' => function($query) use ($keyword)
                                                        
                                                            $query->where('username', 'like', '%'.$keyword.'%');

                                                        ))
                ->where('status',1)->paginate($paginateValue);

欢迎任何帮助...

【问题讨论】:

不应该是array('user' => function($query)吗?还是username 是一张桌子? username 是一个函数 【参考方案1】:

认为应该是这样的:

Groups::with('User')->whereHas('User', function($q) use ($key)
 $q->where('username', 'like', '%'.$key.'%');
)->where('status', 1)->paginate($pagVal);

【讨论】:

以上是关于Laravel 中的急切负载约束过滤器问题的主要内容,如果未能解决你的问题,请参考以下文章

在laravel [实现过滤器]中将多个表与雄辩和急切的加载一起加入

约束急切负载的自定义 orderBy()?

关于Eager用Laravel Eloquent Model中的选择过滤器加载

带有约束的 Laravel 嵌套急切加载

急切负载约束和 whereHas

NHibernate 急切负载