отношение многих ко многим новым - PullRequest
0 голосов
/ 09 ноября 2019

Я столкнулся с проблемой. Я новичок в Laravel. Я создал отношение многие ко многим в моем приложении. Но оно показало ошибку. пожалуйста, проверьте ниже код:

Ошибка

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'post_id' cannot be null (SQL: insert into `category_post` (`category_id`, `created_at`, `post_id`, `updated_at`) values (1, 2019-11-09 17:00:29, ?, 2019-11-09 17:00:29))

Код модели сообщения:

public function  categories()
{
    return $this->belongsToMany('App\Category')->withTimestamps();
}

Категориякод модели

public function posts()
{
    return $this->belongsToMany('App\Post')->withTimestamps();
}

Код PostController

 public function store(Request $request)
{
    $this->validate($request,[


    ]);

    $image = $request->file('image');
    $slug = str_slug($request->name);

    if(isset($image))
    {
        $imageName = $slug.'-'.time().uniqid().'.'.$image->getClientOriginalExtension();

        if(!Storage::disk('public')->exists('posts/'))
        {
            Storage::disk('public')->makeDirectory('posts/');
        }
        $postImage = Image::make($image)->resize(1600,1066)->stream();

        Storage::disk('public')->put('posts/'.$imageName,$postImage);
    }else{

        $imageName = 'default.png';
    }



    $posts = new Post();

    $posts->user_id =Auth::id();

    $posts->title = $request->title;
    $posts->slug = $slug;
    $posts->body = $request->body;
    $posts->image = $imageName;

    $posts->categories()->attach($request->categories);
    $posts->tags()->attach($request->tags);

    $posts->is_approved = true;
    if(isset($request->status))
    {
        $posts->status = true;
    }else{

        $posts->status = false;
    }



    $posts->save();

  //  $posts->tags()->attach($request->tags);
    Toastr::success('Post Is created successfully','Success');
    return redirect()->route('admin.posts.index');

}

Мой код файла create.blde.php является нормальным, все запросы выполняются надлежащим образом, но ошибка появляется, когдаЯ отправляю свое сообщение .. Спасибо заранее

1 Ответ

0 голосов
/ 09 ноября 2019

У вас belongs to many отношения между сообщениями и категориями . Чтобы создать эти отношения в сводной таблице, у вас должны быть category_id и post_id.

Эта строка в вашем коде:

 $posts->categories()->attach($request->categories);

верна, но вы пытаетесь прикрепить категории к post объекту до вассохранил это. Таким образом, несохраненный объект post еще не имеет id.

Сохраните post , а затем присоедините категории с помощью метода attach(), который вы уже написали. .

То же самое с вашим tags() вложением. Вставьте его после сохранения объекта post .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...