laravel 使用复合主键或更改主键

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'];
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一. 说明 以下内容大部分引用Laravel China社区的文章 - 分享下团队的开发规范 ——《Laravel...
    knghlp508阅读 8,050评论 0赞 28
  • 简介 laravel 使实施认证的变得非常简单,事实上,它提供了非常全面的配置项以适应应用的业务。认证的配置文件存...
    Dearmadman阅读 6,403评论 2赞 13
  • MongoDB 条件操作符 Exists(判断字段是否存在) 查询所有存在age字段的记录 User::where...
    白红薯粉阅读 3,718评论 0赞 0
  • 基本用法 我们先从建立一个 Eloquent 模型开始。模型通常放在 app 目录下,但是您可以将它们放在任何地方...
    charmingcheng阅读 1,433评论 0赞 1
  • 一, Laravel 中的路由、控制器、视图简单使用 路由简介:简单点说就是将用户的请求转发给程序进行处理作用,就...
    晨曦入诗阅读 1,881评论 0赞 2

友情链接更多精彩内容