gpt4 book ai didi

php - 具有内部连接的 Laravel 作用域

转载 作者:行者123 更新时间:2023-11-29 05:11:50 24 4
gpt4 key购买 nike

我有 2 个表,projectsjobsjobs 有一个名为 project_id 的列。在 Laravel 5.2 中,我想运行一个搜索,该搜索将返回属于给定搜索词的项目的所有工作。此 SQL 有效:

SELECT jobs.*, projects.name FROM jobs INNER JOIN projects ON jobs.project_id = projects.id WHERE projects.name LIKE "%$keyword%"

在我的 Job.php 模型中,我创建了一个作用域方法,该方法出错:

public function scopeSearch($query, $keyword)
{
if ($keyword != '') {
$query->where(function($query) use ($keyword) {
$query->where('projects.name', 'LIKE', '%' . $keyword . '%')->join('projects', 'jobs.project_id', '=', 'projects.id');
});
}
return $query;
}

这会产生错误:

Column not found: 1054 Unknown column 'projects.name' in 'where clause' (SQL: select * from jobs where (projects.name LIKE %test%))

在我的 JobsController.php 中我有:

$searchResults = Job::Search($searchTerm)->get();

最佳答案

where(function($query) 中的参数$query 不是你在public function 中传入的$query范围搜索($查询,$关键字)

您可以使用如下查询删除它(如@Rob 所述)

public function scopeSearch($query, $keyword)
{
if ($keyword != '') {
$query->where('projects.name', 'LIKE', '%' . $keyword . '%')->join('projects', 'jobs.project_id', '=', 'projects.id');
}
return $query;
}

或者您需要在 use() 中包含 $query

$query->where(function() use ($keyword, $query)

关于php - 具有内部连接的 Laravel 作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38362408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com