Laravel 多态-创建插入记录并跟踪空白记录
为此,我在我的模型上设置了一个多态关系,我必须为变形引用的表创建匹配字段 所以我创造了一个 翻译模式Laravel 多态-创建插入记录并跟踪空白记录,laravel,eloquent,entity-relationship,Laravel,Eloquent,Entity Relationship,为此,我在我的模型上设置了一个多态关系,我必须为变形引用的表创建匹配字段 所以我创造了一个 翻译模式 <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; class Translation extends Model { protected $table = 'translations'; pr
<?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');
}
}
当我运行它时,它会创建一条记录,但也会创建另一条完全为空的记录,而不是引用translationable_id和translationable_类型
有人知道为什么会这样吗
干杯。您能试着在
morptomy
声明中将空字符串更改为null吗:“translations”,null
。或者用$this->morphToMany('App\Models\Translation','translationable')试试代码>因为您使用了laravel命名约定,所以laravel可以自己生成这些值。Hi@Remul不幸的是,仍然是一样的。。。返回$this->morphToMany('App\Models\Translation','translationable','translations',null',translationable_id');您好@Remul感谢您在这方面的帮助,找到了一个解决方案:return$this->morphMany(Translation::class,'translationable');好的,您使用的是一对多关系,而不是多对多关系,这样才有意义。作为旁注:创建翻译时,您可以从传递给$slide->translations()->create()
的数组中删除可翻译的\u id
和可翻译的\u type
,laravel将自己填充这些值。
$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);