合并 2 table 后不显示任何结果,并在 Laravel 中执行 where 语句
Display no result after merging 2 table and do a where statement in Laravel
我正在尝试合并 2 个 table 同一个数据库
$this->make_model_list = DB::table('car__models')->select(
"car__makes.id",
"car__makes.name AS make_name",
"car__models.id AS model_id",
"car__models.name AS model_name",
"car__models.car__make_id",
DB::raw("CONCAT(`car__makes`.`name`,' ',`car__models`.`name`) AS make_model")
)->leftJoin('car__makes', 'car__makes.id', '=', 'car__models.car__make_id')
->get();
然后我做了一个 where 语句如下
$this->makemodels = $this->make_model_list->where('make_model', 'like', '%' . $this->makemodel . '%');
但是return[].
非常感谢您对此提出的建议。谢谢
您似乎在 get()
之后添加了 where()
get()
执行您的查询和 returns 对象集合。
可以在集合上调用 where()
,但您为 where()
提供的参数更适合数据库查询。
我建议您从查询中删除 get()
。 (为了良好的变量命名,您应该调用 make_model_list
make_model_list_query
)
$this->make_model_list_query = DB::table('car__models')->select(
"car__makes.id",
"car__makes.name AS make_name",
"car__models.id AS model_id",
"car__models.name AS model_name",
"car__models.car__make_id",
DB::raw("CONCAT(`car__makes`.`name`,' ',`car__models`.`name`) AS make_model")
)->leftJoin('car__makes', 'car__makes.id', '=', 'car__models.car__make_id');
然后在添加 where()
后调用 get()
$this->make_model_list_query->where('make_model', 'like', '%' . $this->makemodel . '%')->get();
如果您为表格和模型之间的关系创建了 eloquent 模型,那么您可能会更轻松地进行所有操作,这样您就可以利用关系和范围使您的过滤更加清晰。
模型为您处理大量查询。
编辑:
起初我没有注意到你的位置在你的连接值上,我错过了你的查询会抛出 SQL 错误。
您不能 运行 您在 concat 的别名输出中的位置。
因此,您也需要将 concat 放在 where 子句中。像这样:
$this->make_model_list_query->where(DB::raw("CONCAT(`car__makes`.`name`,' ',`car__models`.`name`)"), 'like', '%' . $this->makemodel . '%')->get();
请务必查看我在评论中为 Eloquent 模型添加的链接。
我正在尝试合并 2 个 table 同一个数据库
$this->make_model_list = DB::table('car__models')->select(
"car__makes.id",
"car__makes.name AS make_name",
"car__models.id AS model_id",
"car__models.name AS model_name",
"car__models.car__make_id",
DB::raw("CONCAT(`car__makes`.`name`,' ',`car__models`.`name`) AS make_model")
)->leftJoin('car__makes', 'car__makes.id', '=', 'car__models.car__make_id')
->get();
然后我做了一个 where 语句如下
$this->makemodels = $this->make_model_list->where('make_model', 'like', '%' . $this->makemodel . '%');
但是return[].
非常感谢您对此提出的建议。谢谢
您似乎在 get()
where()
get()
执行您的查询和 returns 对象集合。
可以在集合上调用 where()
,但您为 where()
提供的参数更适合数据库查询。
我建议您从查询中删除 get()
。 (为了良好的变量命名,您应该调用 make_model_list
make_model_list_query
)
$this->make_model_list_query = DB::table('car__models')->select(
"car__makes.id",
"car__makes.name AS make_name",
"car__models.id AS model_id",
"car__models.name AS model_name",
"car__models.car__make_id",
DB::raw("CONCAT(`car__makes`.`name`,' ',`car__models`.`name`) AS make_model")
)->leftJoin('car__makes', 'car__makes.id', '=', 'car__models.car__make_id');
然后在添加 where()
get()
$this->make_model_list_query->where('make_model', 'like', '%' . $this->makemodel . '%')->get();
如果您为表格和模型之间的关系创建了 eloquent 模型,那么您可能会更轻松地进行所有操作,这样您就可以利用关系和范围使您的过滤更加清晰。 模型为您处理大量查询。
编辑:
起初我没有注意到你的位置在你的连接值上,我错过了你的查询会抛出 SQL 错误。 您不能 运行 您在 concat 的别名输出中的位置。 因此,您也需要将 concat 放在 where 子句中。像这样:
$this->make_model_list_query->where(DB::raw("CONCAT(`car__makes`.`name`,' ',`car__models`.`name`)"), 'like', '%' . $this->makemodel . '%')->get();
请务必查看我在评论中为 Eloquent 模型添加的链接。