Php 有口才,在人际关系中寻找
通过关系搜索字段值的正确过程是什么(如在Php 有口才,在人际关系中寻找,php,laravel,eloquent,Php,Laravel,Eloquent,通过关系搜索字段值的正确过程是什么(如在中,名称如%acme%) 假设我们有一个客户机模型,它属于公司。现在我想通过$client->company->name字段过滤(搜索) 我尝试了Client::where('company.name','LIKE','acme')->get() 但它不起作用 我已经准备好了$includes=array('company') 编辑:忘了提到我的关系正在运作 谢谢大家! 尝试使用即时加载: $client = Client::with(array('com
中,名称如%acme%
)
假设我们有一个客户机
模型,它属于公司
。现在我想通过$client->company->name
字段过滤(搜索)
我尝试了Client::where('company.name','LIKE','acme')->get()代码>
但它不起作用
我已经准备好了<代码>$includes=array('company')
编辑:忘了提到我的关系正在运作
谢谢大家! 尝试使用即时加载:
$client = Client::with(array('company' => function($query) {
$query->where('name', 'LIKE', 'acme');
}))->first();
现在我有了更好的理解-Laravel Earge loading没有使用连接查询,这与其他ORM方法不同,可以说使用Fluent query Builder结构将Elount与连接一起使用是可能的。因此,您将无法通过一个相关模型的价值进行雄辩的搜索。使用Fluent接口进行连接:
您仍然可以通过执行Client::join(…)将fluent接口与您的elequent模型一起使用。。。。
对于这类功能,你应该看一些类似于条令的东西。尽管如此,要为更陡峭的学习曲线做好准备 您可以通过在eloquent中使用join方法来实现这一点
Client::join('companies AS company', 'clients.company_id', '=', 'company.id')
->select('clients.*', 'company.name AS company_name')
->with('company')
->where(function($query) {
$query->where('company_name', 'LIKE', 'acme');
})
->get();
如您所见,我将companys表加入到客户机中,以便在返回数据上有一个公司名称。因此,您可以轻松搜索到公司名称为“acme”的客户机。不应该$includes=array('company'))在模型中是一样的吗?从文档中-注意:使用with将覆盖模型$includes。你不明白我的意思…为什么我要覆盖已经设置和工作的东西…现在我有了更好的理解-Laravel Earge loading不使用联接查询,这与其他ORM方法不同,据说它仍然存在可以使用Fluent查询生成器结构将Eloquent与联接一起使用。因此,您将无法使用Eloquent按相关模型的值进行搜索。使用Fluent接口进行联接:您仍然可以通过执行Client::join将Fluent接口与您的elequent模型一起使用(……对于这类功能,你应该看一些类似于条令的东西。不过,要为更陡峭的学习曲线做好准备。