VladSavelev
@VladSavelev
Good man

Как правильно связать таблицу в laravel?

Начну сначала:
В миграции пишу
Schema::table('partner_products', function (Blueprint $table) {
            $table->integer('partner_products_statuses_id')->default(4);
            $table->foreign('partner_products_statuses_id')
                ->references('id')->on('partner_products_statuses');
        });


В модели PartnerProduct
public function partnerProductsStatus()
    {
        return $this->hasOne(PartnerProductsStatus::class, 'id' , 'partner_products_statuses_id');
    }


В модели PartnerProductsStatus
public function partnerProduct()
    {
        return $this->belongsTo(PartnerProduct::class, 'partner_products_statuses_id', 'id');
    }


Почему когда смотрю через PhpStorm не видна связь?
А так же не выводится иконка таблицы, при добавлении этого столбца.
В DDL нету записи об этом столбце
Например что-то вроде этого:

partner_id integer not null
		constraint partner_products_partner_id_foreign
			references partners
				on update cascade on delete cascade,

Но с прошлой миграции например в DDL есть запись о прошлой миграции
Хоть я и удалил через миграцию данный столбец.
product_status varchar(255)

Помогите разобраться что я делаю не так.
  • Вопрос задан
  • 183 просмотра
Пригласить эксперта
Ответы на вопрос 1
Alex_Wells
@Alex_Wells
PHP/Kotlin
Зачем вам pivot таблица? У вас связь one to many, а не many to many.

Миграцию полностью убирайте, методы заменить на

public function partnerProductsStatus()
{
    return $this->hasOne(PartnerProductsStatus::class);
}

public function partnerProduct()
{
    return $this->belongsTo(PartnerProduct::class);
}


А дальше как обычно. Laravel сам со всем разберется.
Ответ написан
Ваш ответ на вопрос

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

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