Полиморфный - создайте вставку записи и добавьте пустую запись - PullRequest
0 голосов
/ 11 ноября 2019

Для этой модели я настроил полиморфные отношения на своей модели, мне пришлось создать соответствующие поля для таблицы, на которую ссылается морф.

Итак, я создал

Модель перевода

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Translation extends Model
{
    protected $table = 'translations';
    protected $primaryKey = 'id';

    protected $fillable = ['title', 'text_line1', 'text_line2', 'quote', 'language', 'content', 'translationable_type','translationable_id', 'content'];

    use SoftDeletes;

    public function translationable()
    {
        return $this->morphTo();
    }
}

Это Полиморф, Тогда в отдельной модели - "Слайды"

Я создал это:

Модель слайда

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Slide extends Model
{
    /**
     * Slide table
     */
    protected $table = 'slides';
    protected $primaryKey = 'id';

    public function translations()
    {
        return $this->morphToMany('App\Models\Translation', 'translationable', 'translations', '', 'translationable_id');
    }

}

Затем в контроллере я создал тестовый скрипт ...

$slide = Slide::find(16);

        $translations = array(
            'text_line1'            => $slide->text_line1,
            'text_line2'            => $slide->text_line2,
            'language'              => 'fr',
            'translationable_id'    => $slide->id,
            'translationable_type'  => 'App\Slide'
        );

        $slide->translations()->create($translations);

Когда я запускаю это, он создает запись, Но также создает другую запись, которая является абсолютно пустой, кроме ссылки на translationable_id и translationable_type

Кто-нибудь знает, почему это будет сделано?

Cheers.

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