Я создаю фильтр, и есть проблема, которую я не могу решить. Фильтр использует отношения, и это идеально. Но когда я делаю фильтр атрибута, который не существует в таблице, он не работает. Поскольку вопрос был слишком сложным, я приведу вам пример кода:
<?php class School extends Eloquent { protected $table = 'schools'; public function city(){ return $this->belongsTo('City'); } public function municipality(){ return $this->belongsTo('Municipality'); } public function listSchoolsEndUser() { $schools_data = new School; if ( Input::has('district') ) { $schools_data = $schools_data->whereHas('city', function($q){ $q->where('district_id', '=', Input::get('district')); }); } if ( Input::has('municipality') ) { $schools_data = $schools_data->whereHas('city', function($q){ $q->where('municipality_id', '=', Input::get('municipality')); }); } if ( Input::has('city') ) { $schools_data = $schools_data->where('city_id', '=', Input::get('city')); } $schools_data = $schools_data->paginate(12); return $schools_data; } }
И ошибка:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'district_id' in 'where clause' (SQL: select count(*) as aggregate from `schools` where (`specialties` like %"5"%) and (select count(*) from `cities` where `schools`.`city_id` = `cities`.`id` and `district_id` = 5) >= 1)
И примерная структура таблицы:
Schools table: |---------------| |id|name|city_id| |---------------| Cities table: |-----------------------| |id|name|municipality_id| |-----------------------| Municipalities table: |-------------------| |id|name|district_id| |-------------------| Districts table: |-------| |id|name| |-------|