我目前正在我的索引刀片文件上创建搜索功能。
我有不同的用户,每个地区有不同的商店。
我的用户模型:
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');
}}
区域模型:
function reports() {
return $this->hasMany('App\Report');
}
function stores() {
return $this->hasMany('App\Store');
}
function user() {
return $this->belongsTo('App\User');
}商店模式:
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');
}我已设法使该功能在管理帐户(在其中您可以看到所有商店)通过以下方式工作:
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'));我想对用户帐户做的是:
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_id,areas.user_id=6,name像%休斯顿%和stores.deleted_at为空)
有人能指出正确的方向让我知道我在这里错过了什么吗?谢谢!
发布于 2020-04-05 21:45:54
当您有错误时,以下是
Column 'some_column_name_here' in where clause is ambiguous...这意味着存在与更多表相关联的复杂查询,其中至少有两个表的结构中有相同的表名,该表名用于复杂查询(在某些查询中,其中.)在本例中,WHERE作为错误状态。您始终可以使用table_name.column_name {table name点列名称}语法将语法指向确切的表意(暧昧)。
https://stackoverflow.com/questions/61028590
复制相似问题