我刚开始使用ORM。我有一个问题,这是我的表格 -
表a - (援助,aname,atag);
表格b - (bid,aid,bname,..);
这是一对多关系 - 即一个援助可以属于多个出价,但一个出价只能属于一个 >援助
所以我正在尝试这段代码,在我想要的输出中 - (bname,aname)用于所有记录。
模特 -
class A extends Eloquent {
protected $table = 'a';
protected $primaryKey = 'aid';
public function brelation() {
$this->belongsToMany('B','aid');
}
}
B型号 -
class B extends Eloquent {
protected $table = 'b';
protected $primaryKey = 'bid';
public function getANames() {
$this->hasOne('A','aid');
}
}
在控制器中 -
foreach(B::with('getANames')->get() as $b_item){
echo $b_item->bname." , ".$b_item->aname;
}
要澄清几点 -
1)我必须指定外键以确保它们映射。因为在我的实际情况中,它们的名称不同。
2)我正在使用Laravel 4。
有人能告诉我我做错了什么以及如何获得理想的结果。
=====更新=====
class A extends Eloquent {
protected $table = 'a';
protected $primaryKey = 'aid';
public function brelation() {
$this->belongsTo('B','aid');
}
}
我仍然无法访问控制器中的 aname列,即($ b_item-> aname)。
答案 0 :(得分:0)
你应该注意的几件事情:
如果您有自定义主键,则需要将eloquent模型上的$ primaryKey属性设置为数据库中的主键。
您不能将belongsToMany
关系与belongsToMany
以外的任何内容混合使用。 belongsToMany
专用于您有两个通过数据透视表连接的表的情况。在您的情况下,B belongsTo
A和A hasMany
B。