首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel雄辩的搜索功能

Laravel雄辩的搜索功能
EN

Stack Overflow用户
提问于 2020-04-04 13:10:28
回答 1查看 167关注 0票数 1

我目前正在我的索引刀片文件上创建搜索功能。

我有不同的用户,每个地区有不同的商店。

我的用户模型:

代码语言:javascript
复制
    function area() {
    return $this->hasOne('App\Area');        
}

function role() {
    return $this->belongsTo('App\Role');
}

function reports() {
    return $this->hasMany('App\Report');
}

function stores() {
    return $this->hasManyThrough('App\Store', 'App\Area');
}

}

区域模型:

代码语言:javascript
复制
   function reports() {
    return $this->hasMany('App\Report');
}

function stores() {
    return $this->hasMany('App\Store');
}

 function user() {
    return $this->belongsTo('App\User');
}

商店模式:

代码语言:javascript
复制
    function district() {
    return $this->belongsTo('App\District');
}


function cluster() {
    return $this->belongsTo('App\Cluster');
}
function city() {
    return $this->belongsTo('App\City');
}

 function area() {
    return $this->belongsTo('App\Area');
}

我已设法使该功能在管理帐户(在其中您可以看到所有商店)通过以下方式工作:

代码语言:javascript
复制
function index(Request $request) {
    if($request->has('search')) {
        $stores = Store::whereHas('city', function($query) use($request) {
        $query->where('name', 'like', '%' . $request->search . '%');
    })->orWhereHas('cluster', function($query) use($request) {
        $query->where('name', 'like', '%' .$request->search. '%');
    })->orWhere('name', 'like', '%' .$request->search. '%')
      ->orWhere('store_no', 'like', '%' .$request->search. '%')->paginate(10);  

    } else {
        $stores = Store::orderBy('created_at', 'desc')->paginate(10);
    }

    return view('/stores.store_list', compact('stores'));

我想对用户帐户做的是:

代码语言:javascript
复制
function index(Request $request) {
    if($request->has('search')) {
        $id = Auth::user()->id;
        $query = $request->search;
        $user = User::find($id)->stores()->where('name', 'like', '%' . $query . '%')->paginate(10);


    } else {

        $id = Auth::user()->id;
       $user = User::find($id)->stores()->orderBy('created_at', 'desc')->paginate(10);
    }

    return view('/stores.store_list', compact('user'));

}

我在搜索时出错了:

SQLSTATE23000:完整性约束违反:在where子句中有1052列'name‘是模棱两可的(SQL:选择count(*)作为areas内连接areas的聚合。id= stores.area_idareas.user_id =6,name像%休斯顿%和stores.deleted_at为空)

有人能指出正确的方向让我知道我在这里错过了什么吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-05 21:45:54

当您有错误时,以下是

代码语言:javascript
复制
Column 'some_column_name_here' in where clause is ambiguous...

这意味着存在与更多表相关联的复杂查询,其中至少有两个表的结构中有相同的表名,该表名用于复杂查询(在某些查询中,其中.)在本例中,WHERE作为错误状态。您始终可以使用table_name.column_name {table name点列名称}语法将语法指向确切的表意(暧昧)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61028590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档