Laravelでは多対多の構造をbelongsToMany
を使って定義できる。これは規約に外れた中間テーブル名やカラム名を構築してしまっていても引数指定でいける。
belongsToManyの設定では以下のようにする
- 第1引数では最終的な接続先モデルを指定する
- 第2引数では中間テーブル名を指定する
- 第3引数では接続元モデルIDを示す中間テーブル内のカラムを指定する
- 第4引数では接続先モデルIDを示す中間テーブル内のカラムを指定する
namespace App\Model;
use Illuminate\Database\Eloquent\Model;
class Entry extends Model
{
public $timestamps = false;
public function tags()
{
return $this->belongsToMany('App\Model\Tag', 'entry_tags', 'entry_id', 'tag_id');
}
}