🐈

【Laravel】中間テーブルをsycnメソッドでお手軽に保存する

2022/02/08に公開

概要

syncメソッドを利用することで関連テーブルのデータ更新を簡単に行ってみた

https://readouble.com/laravel/8.x/ja/eloquent-relationships.html

リレーションの定義

User.php
class Users extends Model
{
    /**
     * モデルと関連しているテーブル
     *
     * @var string
     */
    protected $table = 'users';

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'id', 'name'
    ];

    public function roles(): \Illuminate\Database\Eloquent\Relations\BelongsToMany
    {
        return $this->belongsToMany(Roles::class, 'user_roles', 'user_id', 'role_id');
    }

sync()ロジックを定義する

UserService.php
public function store(array $postData, $id = null)
{
    $user = User::query()->updateOrCreate(
        ['id' => $id],
        $request
    );

    return $user->roles()->sync($postData['role_id'] ?? []),
}

最後に

読んでいただきありがとうございます。
今回の記事はいかがでしたか?
・こういう記事が読みたい
・こういうところが良かった
・こうした方が良いのではないか
などなど、率直なご意見を募集しております。

GitHubで編集を提案

Discussion

ログインするとコメントできます