既存のテーブルで主キーが設定されていないものがあり、タイトルのようなことができないか試してみました。

環境


Laravel5.5で確認しています。

コード


通常、Eloquent ORMを使用する場合にIlluminate\Database\Eloquent\Modelを継承しますが、継承先で$primaryKeyメンバ変数にnullを設定します。

あわせて$incrementingメンバ変数にfalseを設定します。

1
<?php
2
3
namespace App;
4
5
use Illuminate\Database\Eloquent\Model;
6
7
class Hoge extends Model
8
{
9
    /**
10
     * プライマリーキー無効 
11
     */
12
    protected $primaryKey = null;
13
14
    /**
15
     * AutoIncrement無効
16
     */
17
    public $incrementing = false;
18
}

これで、主キーのないテーブルでもEloquentが使用できます。