雄辩的ORM查询 - 新手

时间:2013-08-16 20:47:33

标签: php database orm laravel eloquent

我刚开始使用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)

1 个答案:

答案 0 :(得分:0)

你应该注意的几件事情:

  1. 如果您有自定义主键,则需要将eloquent模型上的$ primaryKey属性设置为数据库中的主键。

  2. 您不能将belongsToMany关系与belongsToMany以外的任何内容混合使用。 belongsToMany专用于您有两个通过数据透视表连接的表的情况。在您的情况下,B belongsTo A和A hasMany B。