开发者社区> 问答> 正文

Laravel雄辩地说,联接表并进行过滤查询

我正在尝试编写查询以过滤表,但是看起来有些不对劲。

    $city = $request->get("city");
    $price = $request->get("price");

首先检查计划表是否为空。然后开始编写过滤查询。

    ->groupBy("address","place_name")
    ->when($keyword, function($query, $keyword) {
        return $query->where("place_name", "LIKE", "%$keyword%");
    })
    ->when($city, function($query, $city) {
        return $query->where("city", "LIKE", "%$city%");
    })

查询工作到basic_info表。但是当我$keyword在basic_info表中搜索时会弹出错误提示 调用模型> [App \ Model \ Place]上未定义的关系[basic_infos]。

    ->when($keyword, function($query) use ($keyword){
        $query->with(["basic_infos" => function($query, $keyword){
            return $query->where("basic_info.wedding_style", "LIKE", "%$keyword%");
        }]);
    })
    //plan table
    ->when($price, function($query) use ($price){
        $query->with(["basic_infos" => function($query, $price){
            return $query->where("plans.plan_price", "<=", $price);
        }]);
    })

    ->paginate(20);
    return $datas;

但是实际上它是定义的。这是模特

放置模型

{
    return $this->hasMany("App\Model\BasicInfo");
}

基本信息模型

{
    return $this->belongsTo("App\Model\Place");
}

但是在->when函数内部的查询中,当我使用->with它时,似乎发生了问题。我想,我在错误的时间使用了它,否则…… plan表的查询肯定也会发生同样的事情。正确的方法是什么?

展开
收起
社区秘书 2019-11-29 11:31:48 595 0
0 条回答
写回答
取消 提交回答
问答分类:
PHP
问答地址:
问答排行榜
最热
最新

相关电子书

更多
RowKey与索引设计:技巧与案例分析 立即下载
Phoenix 全局索引原理与实践 立即下载
低代码开发师(初级)实战教程 立即下载