更新 laravel 数据库

Update laravel database

我知道如果我想在 laravel 上更新数据库,我可以使用

$user = User::find($request->id);
$user->name = $request->get(‘name’);
$user->save();

但是,如果我的 table 中没有 id 列怎么办?主列名不是id?这个方法我试过了,没用

$user = User::where(‘userID’, $request->id);
$user->name = $request->get(‘name’);
$user->save();

这是我的table内容

accountReceiveAble

  1. 销售额 - PK
  2. 发票
  3. 税单
  4. 民进党
  5. ppn
  6. 付款日期
  7. 付款方式

这是我的控制器

public function store(Request $request)
    {
        $ra = accountRecieveAble::where('sales',$request->sales)->firstOrFail();
        $ra->invoice = $request->get('invoice');
        $ra->taxInvoice = $request->get('taxInvoice');
        $ra->dpp = $request->get('dpp');
        $ra->ppn = $request->get('ppn');
        $ra->paymentDate = $request->get('date');
        $ra->paymentMethod = $request->get('method');
        $ra->save();
        return redirect(action('AccountRecieveAbleController@index'));
    }

这是我的模特

class accountRecieveAble extends Model
{
  protected $table = "account_recieve_ables";
  public $primaryKey = 'sales';
  public $timestamps =false;

  public function sale(){
    return $this->belongsTo('App\sales','sales');
  }
}

在此查询中 $user = User::where(‘userID’, $request->id); 像这样追加 first() $user = User::where(‘userID’, $request->id)->first();

如果您想将 primary key 更改为 id 以外的其他内容,您需要在您的模型中覆盖它。

class YourModel
{
    /**
     * Your primary key column name.
     *
     * @var integer
     */
    $primaryKey = 'sales';
}

此外,如果它不是整数值,那么同样,您必须将以下内容添加到您的模型中..

class YourModel
{
    /**
     * Your primary key column name.
     *
     * @var integer
     */
     protected $primaryKey = 'sales';

     /**
      * If your primaryKey is not integer or non numeric value
      * 
      * @var string
      */
     protected $keyType = 'string';

     /**
      * And if it is not going to increment the value
      * 
      * @var boolean
      */
     public $incrementing = false;
}

documentation - 向下滚动到 Primary Keys 部分:

Eloquent will also assume that each table has a primary key column named id. You may define a protected $primaryKey property to override this convention.