更新laravel数据库

时间:2019-01-25 07:02:27

标签: mysql database laravel laravel-5.7 laravel-query-builder

我知道是否要在laravel上更新数据库,我可以使用

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

但是如果我的表中没有ID列怎么办?它的主要列名称不是id吗?我尝试过这种方法,但没有用

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

这是我的餐桌内容

accountReceiveAble

  1. 销售-PK
  2. 发票
  3. 税收发票
  4. dpp
  5. ppn
  6. paymentDate
  7. payementMethod

这是我的控制器

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');
  }
}

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

如果要将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部分:

  

口才也将假设每个表都有一个主键列   命名的ID。您可以定义一个受保护的$primaryKey属性以覆盖   这个约定。