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 테이블에있는 항목을 찾을 수 없습니다 체크입니다. 당신은 당신의 Post
모델의 호출에게 hasMany
를 반환해야
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');
}
}
이제이 오류가 발생했습니다. "정의되지 않은 메소드 호출 \ Database \ Query \ Builder :: attach()"를 호출합니다. – Ying
'hasMany'가 아닌'belongsToMany'이어야합니다. – Hamoud
감사합니다. belongsToMany로 답변을 업데이트 할 수 있습니까? 나는 그것을 선택할 것이다. – Ying