【问题标题】:Eloquent ORM query -- newbie雄辩的 ORM 查询——新手
【发布时间】:2013-08-19 08:46:31
【问题描述】:

我刚开始使用 ORM。我有一个问题,这是我的表--

table a - (aid, aname, atag);

table b - (bid,aid, bname, ..);

这是一对多的关系 - 即一个 aid 可以属于多个 bid 但一个 bid 只能属于一个 援助

所以我正在尝试这段代码,在输出中我想要 - (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)

【问题讨论】:

    标签: php database orm laravel eloquent


    【解决方案1】:

    您应该注意的几件事:

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

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

    【讨论】:

    • 您好,我已经编辑了我的帖子..我仍然无法访问表 A 中的 aname 列..我已经完成了您建议的所有更改..
    • 正如我所提到的,A 属于 B,而不是您在编辑中拥有的其他方式。 brelation() 应该是$this->hasMany('B', 'aid')。 arelation() 应该是$this->belongsTo('A', 'aid')
    猜你喜欢
    • 2016-09-04
    • 2016-02-26
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多