Для этой модели я настроил полиморфные отношения на своей модели, мне пришлось создать соответствующие поля для таблицы, на которую ссылается морф.
Итак, я создал
Модель перевода
<?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.