【发布时间】:2015-04-04 00:10:41
【问题描述】:
我正在制作过滤器,但有一个我无法解决的问题。过滤器使用关系,它是完美的。但是,当我对表中不存在的属性进行过滤时,它不起作用。因为问题太复杂我给你一个示例代码:
<?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|
|-------|
【问题讨论】:
-
不应该是
where('district_id', '=', Input::get('district'))吗? -
是的,这又是我的错误,但错误相同:(
-
City和District有什么关系? -
我用表格结构编辑问题
-
根本没有关系。你怎么知道什么属于哪个区。你可能在某个地方需要
district_id。