2016-05-17 152 views
0

我有一個模式是這樣的:插入默認值

class Lesson extends Model 
    { 
     use SoftDeletes; 

     public $primaryKey = 'lesson_id'; 
     . 
     . 
     . 

     public function contents() 
     { 
       return $this->hasMany('App\Content', 'lesson_id', 'lesson_id'); 
     } 

    } 

而在另一方面內容模式是這樣的:

class Content extends Model 
{ 
    public $primaryKey = 'content_id'; 
    public $timestamps = false; 

    public function lesson() 
    { 
     return $this->belongsTo('App\Lesson', 'lesson_id', 'lesson_id'); 
    } 

} 

由於你看到的是一個hasMany兩種模式的關係。

內容模型有這個屬性:

content_id 
lesson_id 
contentable_id 
contentable_type 
order 

和課程模式有以下:

lesson_id 
title 
content 

現在我保存特定課程的內容時想,有些內容屬性自動填入基於課模型屬性。

$lesson = Lesson::findOrFail($lessonID); 
$lesson->contents()->create(
     [ 
      'contentable_id' => $newUnit['unit_id'], 
     ] 
); 

例如lesson_id選擇課的被保存爲內容模型的lesson_idApp\Lesson字符串作爲contentable_type

我該怎麼做?

回答

0

下面做

課程模式

class Lesson extends Model 
    { 
     use SoftDeletes; 

     public $primaryKey = 'lesson_id'; 
     . 
     . 
     . 

     public function contents() 
     { 
       return $this->hasMany('App\Content', 'content'); 
     } 

    } 

內容模型

class Content extends Model 
{ 
    public $primaryKey = 'content_id'; 
    public $timestamps = false; 

    public function lesson() 
    { 
     return $this->belongsTo('App\Lesson', 'content'); 
    } 

} 

的變化那就試試吧

$lesson = Lesson::findOrFail($lessonID); 
$content = new Content(); 
$content->contentable_id = '1111'; 
$lesson->contents()->save(content); 
+0

Lesson Model的'content'字段是簡單的TEXT字段,對於課程模型中的內容模型不是外鍵 –

+0

您是否檢查過我的代碼? –

+0

您已將'content'字段添加到'$ this-> hasMany('App \ Content','content');'和'$ this-> belongsTo('App \ Lesson','content');'作爲外鍵那是不正確的。我想''contentable_id'由所選'Lesson'模型的'lesson_id'自動填充。你手動初始化它。 –