В настоящее время я создаю функцию поиска по моему файлу индекса.
У меня разные пользователи, которые имеют разные магазины в каждой области.
моя модель пользователя:
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'));
}
При поиске возникает ошибка:
SQLSTATE [23000]: нарушение ограничения целостности: 1052 Имя столбца в где условие является неоднозначным (SQL: выберите количество (*) в качестве совокупности из stores
внутреннего объединения areas
на areas
. id
= stores
. area_id
где areas
. user_id
= 6 и name
как% houston% и stores
. deleted_at
равно нулю)
Может ли кто-нибудь указать мне правильное направление и дать мне знать, чего мне здесь не хватает? Спасибо!