Как реализовать ORM в Laravel?

Маршрутизация - файл routes.php:
Route:post(/add,[
'as'=>'add',
'uses'=>'AddController@addPeople'
]);


Сам контроллер AddController.php:
class AddController extends BaseController{
$data=Input::all()       //В $data записываем все сохраненные данные с нашей формы в виде ассоциативного массива
People::addPost($data);    //Вызываем функцию в нашей модели,где в качестве параметра у нас наша переменная $data
}


Модель People.php:
Class People extends Eloquent{
public $timestamps = false;  // нету столбцов(с датой обновление и загрузки записей) которые по умолчанию в laravel
protected $fillable = array(
'name',
'surname',
'message '
); // добавляем доступ к добавлению к данным столбцам

public static function addPost($data){
$add = People::create($data); //Добавляем наши новые записи в бд
return $add;
}
}


Наша view add.blade.php:
....
{{Form:open(array('url'=>action('AddController@addPeople')))}}
{{Form:text('name',null)}}
{{Form:text('surname',null)}}
{{Form:text('message ',null)}}
{{Form:submit('Отправить',null)}}
{{Form::close()}}


И есть две таблицы 1)peoples(столбцы - id,name,surname) и 2)informations( c внешним ключем соответственно people_id и message ).Все нормально когда мы добавляем только в одну таблицу(в данном случаи name и surname).Но как связать базу данных чтобы выполнялся запрос к двум таблицам?Где нужно прописывать связи таблиц,и нужно ли создавать модель informations для этого?Пока что выходит ошибка field list( ну что такого столбца не существует)Буду очень благодарен,если распишете практически как это должно быть.
  • Вопрос задан
  • 3609 просмотров
Пригласить эксперта
Ответы на вопрос 3
@iznaur
я не работал с Laravel,но если я вас правильно понял вам нужно связать таблицы
Ответ написан
@zugo
В Eloquent отношения таблиц прописываются прямо в модели:

сlass People extends Eloquent {
    public function information() {
        return $this->hasMany('Information')
    }
}

сlass Information extends Eloquent {
    public function people() {
        return $this->hasOne('People')
    }
}


В дальнейшем при запросе требуется JOIN, Eloquent может решить этот вопрос, например, так:

People::all()->with('information')->get();
Ответ написан
А у вас в AddController функции нет addPeople и все так вот и написано, как вы выложили?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы