Laravel Syn c Удалить и заново создать? - PullRequest
1 голос
/ 23 января 2020

Я ищу дополнительную информацию о том, как Laravel Syn c На самом деле работает. У меня есть таблица отношений, которая содержит следующее

group_id, user_id, permission, created_at, updated_at

Я создаю массив для передачи в команду syn c следующим образом.

$groups_array[$group_id] = ['permission' => 0];

Когда я делаю это, а затем вызываю syn c, он устанавливает даты create_at и updated_at для существующих отношений в NULL. Желаемым эффектом будет то, что он просто обновит значение разрешения до 0 в существующей взаимосвязи и не установит для значений create_at и updated_at значение NULL.

Похоже, что Syn c удаляет все и просто повторно -создание отношений на основе отправленного массива. Разве нет способа сказать это, чтобы обновить существующие отношения вместо удаления и повторного их создания?

Ответы [ 2 ]

0 голосов
/ 23 января 2020
// Post Model
    public function categories()
    {
        return $this->belongsToMany('App\Category')->withTimestamps();
    }

    public function tags()
    {
        return $this->belongsToMany('App\Tag')->withTimestamps();
    }
// Tag Model
 public function posts()
    {
        return $this->belongsToMany('App\Post')->withTimestamps();
    }
// Category Model
 public function posts()
    {
        return $this->belongsToMany('App\Post')->withTimestamps();
    }
// Post Controller Update
public function update(Request $request, Post $post)
    {
         $this->validate($request,[
            'title' =>'required',
            'categories' => 'required',
            'tags' => 'required'
        ]);




        $post->user_id = Auth::id();
        $post->title = $request->title;
        $post->slug = str_slug($request->title);
        $post->save();
        $post->categories()->sync($request->categories);
        $post->tags()->sync($request->tags);
        Toastr::success('Post Successfully Updated:)','Success');
        return redirect()->route('admin.post.index');
    }

// Delete
public function destroy(Post $post)
    {

        $post->categories()->detach();
        $post->tags()->detach();
        $post->delete();
        Toastr::success('Post Successfully Deleted :)','Success');
        return redirect()->back();
    }
0 голосов
/ 23 января 2020

По умолчанию отношения «многие ко многим» в Laravel не включают отметки времени, вам необходимо определить их для отношения.

public function users()
{
    return $this->belongsToMany(User::class)->withTimestamps();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...