Задать вопрос
@constintmid
Laravel vue.js

Laravel связи вставка данных?

Есть 2 таблицы они между собой связаны
// table book:
$table->bigIncrements('id');
$table->bigInteger('book_language_id')->unsigned()->nullable();
$table->foreign('book_language_id')->references('id')->on('book_languages');

// table:book_languages
$table->bigIncrements('id');
$table->char('name',255);

И также связь один к одному
class BookLanguage extends Model
{
    public function book(){
        return $this->belongsTo(Book::class);
    }
}

class Book extends Model
{
    protected $guarded = [];
    public function language(){
        return $this->hasOne(BookLanguage::class,'id','book_language_id');
    }
}

Вопрос в следующем приходит поле я создаю объект книги и хочу привязать связь но у меня есть из объекта книга только его name допустим 'Rus' в ларавел я пытался привязка только по ключу проходит
$book=Book::create(['name'=>'books','ISBN'=>'123123','book_language_id'=>1]);

Как можно реализовать привязку по имени в phpmyadmin спокойно проходит почему в ларавел нельзя буду благодарен за любую помощь
P.S гуглом и яндексом пользоваться умею но там не особо много ,много пишут про вытаскивания данных
  • Вопрос задан
  • 137 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
maddog670
@maddog670
$lang = BookLanguage::find($request->book_language_id);

$book = Book::make(['name'=>'books','ISBN'=>'123123']);
$book->language()->associate($lang);

$book->saveOrFail();


https://laravel.com/docs/6.x/eloquent-relationship...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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