2013-08-16 2 views
0

Я только начинаю с ORM. У меня был вопрос, это мой табель -Eloquent ORM query - новичок

стол a - (помощь, aname, atag);

таблица b - (ставка, помощь, bname, ..);

Это один ко многим отношений - это один помощь может принадлежать многим ставка но одна ставку может принадлежать только одна помощи.

Итак, я попробовал этот код, в то время как я хочу - (bname, aname) для всех записей.

Модель -

class A extends Eloquent { 
    protected $table = 'a'; 
    protected $primaryKey = 'aid'; 
    public function brelation() { 
     $this->belongsToMany('B','aid'); 
    } 
} 

Б модель -

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

Несколько вещей, которые вы должны знать:

  1. Если у вас есть пользовательский первичный ключ, вам необходимо установить свойство $ PrimaryKey на ваших выразительных моделей первичных ключей у вас есть в БД ,

  2. Вы не можете смешивать и сопоставлять belongsToMany отношения ни с чем, кроме belongsToMany s. A belongsToMany предназначен исключительно для случая, когда у вас есть две таблицы, которые соединены с помощью сводной таблицы. В вашем случае, B belongsTo A и A hasMany B.

+0

Привет Я редактировал свой пост .. Я до сих пор не в состоянии получить доступ к колонку aname из таблицы А .. Я сделал все изменения предложил .. – Fox

+0

Как я уже говорил, 'A' принадлежит' B', а не наоборот, как вы его в своем редактировании. brelation() должно быть '$ this-> hasMany ('B', 'aid')'. islation() должно быть '$ this-> принадлежит To ('A', 'aid')'. – treeface