【发布时间】:2014-12-27 19:07:19
【问题描述】:
我有 3 个模型:
模型 A:
class A extends \Eloquent {
...
public function Bs() {
return $this->belongsTo('B','B_id','id');
}
public function Xs() {
return $this->belongsTo('X','X_id','id');
}
public function Ys() {
return $this->belongsTo('Y','Y_id','id');
}
...
}
模型 B:
class B extends \Eloquent {
...
public function As()
{
return $this->hasMany('A');
}
public function Cs()
{
return $this->hasMany('C');
}
...
}
模型 C:
class c extends \Eloquent {
...
public function Bs()
{
return $this->belongsTo('B','B_id','id');
}
public function Zs()
{
return $this->belongsTo('Z','Z_id','id');
}
...
}
我需要 A 的所有数据,并在 X、Y 和 Z 上使用过滤器。然后我像这样将 hasManyThrough() 添加到 C;
模型 C:
class c extends \Eloquent {
...
public function Bs()
{
return $this->belongsTo('B','B_id','id');
}
public function Zs()
{
return $this->belongsTo('Z','Z_id','id');
}
public function As()
{
return $this->hasManyThrough('A','B','id','B_id');
}
...
}
但是当我使用这样的控制器获取数据时:
public function index()
{
$output=C::where('Z_id','=',Input::get('Z'))
->with('As');
...
}
它让我对 As
感到空白[As] => Array
(
}
*****编辑 1******
表详细信息
这是他们
表 A | 职位空缺 |编号 |标题 | city_id |类型 | company_id
表 B | 公司 |编号 |姓名 |网址
公司有很多职位空缺
表 C | 公司行业 |编号 |类型 | company_id |行业标识
并且可能是许多工业部门的一部分。
type 是 1 或 2,其中 1 表示主要,2 表示其他
表 D | 行业 |编号 |名称
所有行业名称的主表
例如。服务、时尚等
【问题讨论】:
-
@eep Patel 查看最后代码行的语法
-
您已经有一段时间没有问过了,我不确定您是否找到了答案,但我注意到,在 Laravel-3 中,您只能在主模型类之后使用
with("eager_loading_method")。所以它应该像下面$output = C::with("As")->where('Z_id', "=", Input::get('Z' , '' ) );也有利于为查询 Z 添加默认值
标签: php laravel orm eloquent laravel-3