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

環境


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

コード


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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Hoge extends Model
{
/**
* プライマリーキー無効
*/
protected $primaryKey = null;

/**
* AutoIncrement無効
*/
public $incrementing = false;
}

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