Laravel中定义复合主键

本文介绍了在Laravel中如何定义和使用复合主键。通过创建Traits/HasCompositePrimaryKey文件,并在Model中应用,可以实现Eloquent ORM对复合主键的支持,允许使用save()方法进行操作。
摘要由CSDN通过智能技术生成

laravel默认主键是id,但有的时候我们建表时可能会需要用到复合主键,那么laravel中使用Eloquent Medel如何定义复合主键呢?直接上代码。


 

首先在app目录先创建文件 Traits/HasCompositePrimaryKey 内容如下:

// Adjust this to match your model namespace!
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  \Illuminate\Database\Eloquent\Builder $query
     * @return \Illuminate\Database\Eloquent\Builder
     */
    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中使用:

<?php
    namespace App;

    use Illuminate\Database\Eloquent\Model;

    class Goods extends Model
    {
        use \App\Traits\HasCompositePrimaryKey;

        protected $primaryKey = ['param1', 'param2']; //设置组合主键

        // coding

    }

这样Eloquent ORM的save()方法就可以使用了。

转载于:https://www.cnblogs.com/cfenglx/p/7338245.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值