laravel默认主键是id,但有时可能会须要用到复合主键,或主键不是id,那么laravel中使用Eloquent Medel如何使用呢?
代码如下:
1.只更改ID
class ParkConfig extends Model {
protected $primaryKey = 'park_id';
}
2.复合主键
首先在app目录先建立文件 Traits/HasCompositePrimaryKey 内容如下:
namespace App\Traits;
use Illuminate\Database\Eloquent\Builder;
trait HasCompositePrimaryKey {
/**
* Get the value indicating whether the IDs are incrementing.
*
* @return bool
*/
public function getIncrementing() {
return false;
}
/**
* Set the keys for a save update query.
*
* @param IlluminateDatabaseEloquentBuilder $query
*
* @return IlluminateDatabaseEloquentBuilder
*/
protected function setKeysForSaveQuery(Builder $query) {
foreach ($this->getKeyName() as $key) {
if ($this->$key)
$query->where($key, '=', $this->$key);
else
throw new Exception(__METHOD__ . 'Missing part of the primary key: ' . $key);
}
return $query;
}
}
在model中使用:
use App\Traits\HasCompositePrimaryKey;
class ParkConfig extends Model {
use HasCompositePrimaryKey;
protected $primaryKey = ['park_id', 'key'];
}