Принадлежит Laravel

#php #laravel

#php #laravel

Вопрос:

У меня есть таблица с именем cars и двумя полями id, matriculation . Затем у меня есть другая таблица с именем series и двумя полями id, name .

Я создал свои fk_serie машины на своем столе.

 public function up()
    {
        Schema::create('cars', function (Blueprint $table) {
            $table->increments('id');
            $table->string('matriculation', 25);
            $table->integer('fk_serie')->unsigned();
            $table->foreign('fk_serie')->references('id_serie')->on('serie');
            $table->timestamps();
        });
    }
  

Вот моя информация о серии таблиц.

 public function up()
    {
        Schema::create('series', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name', 30);
            $table->timestamps();
        });
    }
  

В моей модели у меня есть функция только для модели автомобиля.

 public function serie(){
    return $this->belongsTo('AppSerie', 'fk_serie');
}
  

У меня ничего нет в моей серии моделей

 class Serie extends Model
{
    //
}
  

Нормально ли, что серия моделей пуста?
Потому что мое объединение работает.

Что вы думаете?

Обзор

Есть ли ошибка?

Комментарии:

1. Если вам не нужно писать запрос, подобный этому: Serie::with('car')->find($id) это нормально.

2. Здесь ошибка $table->foreign('fk_serie')->references('id_serie')->on('serie'); . Так и должно быть ...->references('id')... . Я бы ответил более подробно, но я не понимаю вопроса. Вы могли бы добавить вызываемый вами метод, что вы ожидаете и что вы получаете. Это должно прояснить ситуацию.

3. @ dparoli: спасибо dparoli 😉

4. @brnd0: Спасибо. Я редактирую ...->references('id_serie')

Ответ №1:

Как Dparoli упоминалось в комментариях, если вам не нужен приведенный ниже запрос, то ваша приведенная выше структура отношений является нормальной

 Serie::with('cars')->find($id)
  

Но если вы хотите настроить взаимосвязь в Serie модели, вы можете сделать что-то вроде приведенного ниже:

 class Serie extends Model
{
   public function cars() { 
       return $this->hasMany('AppCar', 'fk_serie'); // your relationship
   } 
}
  

И после этого вы можете сделать:

 $series = Serie::with('cars')->find($id); //eager loading cars
$cars = $series->first()->cars;
  

Комментарии:

1. Рад знать, что это помогло 🙂