2017-11-18 177 views
0

插入多個標籤,我想插入多個標籤一個帖子記錄,因此,這裏是我的郵編@店:未能就Laravel

$post = Post::create(array(
      'title' => $request->title, 
      'body' => $request->body, 
      'user_id' => Auth::id(), 
     )); 

     if($post && $request->tags) 
     { 
      $tagNames = explode(',', $request->tags); 
      $tagIds = []; 
      foreach($tagNames as $tagName) 
      { 
       $tag = Tag::firstOrCreate(['name'=>$tagName]); 
       if($tag) 
       { 
        $tagIds[] = $tag->id; 
       } 
      } 

      $post->tags()->attach($tagIds); 
     } 

,但它給我一個錯誤"Call to a member function attach() on null"。當我在MySQL中檢查標記已經在那裏,但我無法找到我的post_tag表上的任何條目。這裏是我的崗位模型:

class Post extends Model 
{ 
    protected $fillable = ['user_id','title','slug','body','tags','category_id','featured']; 

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

    public function tags() 
    { 
     $this->hasMany('App\Tag'); 
    } 
} 

回答

1

您需要在您的Post模型回電話的hasMany

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

更新

您應該使用belongsToManyhasMany

+0

現在我得到了這個錯誤「調用未定義的方法照亮\數據庫\查詢\ Builder :: attach()」 – Ying

+0

它應該是'belongsToMany'不'hasMany' – Hamoud

+0

偉大,謝謝。你能用belongsToMany更新你的答案嗎?我會選擇它。 – Ying