#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. Рад знать, что это помогло 🙂