Как прикрепить отношения непосредственно к объекту? - PullRequest
0 голосов
/ 28 января 2020

Я не знаю, правильно ли я сформулировал вопрос, но что угодно.

Поэтому, когда я использую метод «store» на моем контроллере, я посылаю два поля, «name» и «fr», оба в одном запросе. В моем контроллере я хочу иметь возможность создавать свою модель (Room) и привязывать к ней свои отношения (RoomTranslation). Когда я пробую следующий код, он говорит, что я не предоставил номер_идентификатора. Есть ли автоматический c способ добиться этого?

    public function store(RoomRequest $request)
    {
        $request = $request->validated();
        $room = new Room;
        $room->create($request);
        $room->translations()->create($request);
        return success('');
    }
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class RoomTranslation extends Model
{
    protected $fillable = ['fr', 'room_id'];

    public function room() {
        return $this->belongsTo('App\Room');
    }
}

<?php

namespace App;

use Illuminate\Http\Request;
use Illuminate\Database\Eloquent\Model;
use App\RoomTranslation;

class Room extends Model
{

    protected $fillable = ['name'];

    public function categories() {
        return $this->hasMany('App\Category');
    }

    public function translations() {
        return $this->hasOne('App\RoomTranslation');
    }
}

Спасибо за вашу помощь!

PS: Если есть более чистый способ написать это часть моего кода, я буду рад услышать, как я могу улучшить его.

Спасибо!

1 Ответ

1 голос
/ 28 января 2020

Вы можете сделать это:

Room::create($request->only(['name']))->translations()->create($request->only(['fr']));

просто посмотрите на правильность опечаток или вводимых имен.

Также в отношении переводов классов модели комнаты, если у вас есть несколько языков для каждой комнаты, следует be hasMany , и если у вас мало переводов на комнату, вы можете просто добавить колонку для языка перевода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...