合并 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 模型添加的链接。