У меня есть модель «Проект», которая принадлежит ToMany sites
, и каждый site
принадлежит одному Locality
, а каждый locality
принадлежит одному State
.
С другой стороны, у меня есть пользователь, принадлежащий ToMany States
Я хочу перечислить проекты, которые находятся в том же состоянии, что и пользователь, поэтому...
$user = Auth::getUser();
$userStates = array();
foreach($user->profile->states as $singleState){
$userStates[] = $singleState->id;
}
Project::with(['sites','locality','state'])
->whereHas('state', function($q) use($userStates) {
// Query the name field in status table
$q->whereIn('id', $userStates); // '=' is optional
})
Я использую OctoberCMS, который построен на laravel, однако я продолжаю получать сообщение об ошибке:
Call to undefined method October\Rain\Database\QueryBuilder::state()
state
в модельProject
? - person Classified   schedule 15.08.2018state()
? - person Rwd   schedule 15.08.2018state
не имеет прямого отношения к проекту, потому что проект может работать на разных сайтах, и это должно быть определяющим фактором при определении того, к какому штату принадлежит проект. - person Ahmed Albarody   schedule 15.08.2018class Locality extends Model { public $belongsTo = [ 'state' => ['Albaroody\Grants\Models\RegionState'] ]; public $hasMany = [ 'sites' => ['Albaroody\Grants\Models\ProjectSite', 'key'=> 'locality_id'] ]; }
- person Ahmed Albarody   schedule 15.08.2018