Laravel5で多対多構造をbelongsToManyで定義する

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');
}
}

参考
https://laravel10.wordpress.com/2015/03/30/%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AElaravel-5-33-%E5%A4%9A%E5%AF%BE%E5%A4%9A%E3%81%AE%E3%83%AA%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3-%E3%83%A2%E3%83%87%E3%83%ABdb%E7%B7%A8/

mysqldumpでデータベースをバックアップする

全体バックアップ

文字コードを指定したほうが絶対良い。もしutf8mb4とかで絵文字が保存されているのにデフォルトのutf8とかでバックアップしてしまった暁には復元不可能だ。。

mysqldump -h remote.host -u user -p name --skip-lock-tables --port 13306 --default-character-set=utf8mb4 > mysqldump.sql

特定のテーブルに限定してバックアップを取る

mysqldump -h host -p -u user dbname --skip-lock-tables table1, table2 > output.sql

追記:特定テーブルだけのdumpについて上手く行かず--column-statistics=0を付けなければ動作しない問題にぶち当たるが、いつも自己解決したはずのことをもう一度調べなおすことが多いのでこちらに追記しておく。
https://qiita.com/setouchi/items/7bdba777b565b14fb45b

こちらを参考にさせてもらった。INSERT文だけの抽出も簡単にできるようだ。
http://qiita.com/katsukii/items/c7709fc501c1eb11603f