Обновить базу данных Laravel - PullRequest
0 голосов
/ 25 января 2019

Я знаю, если я хочу обновить базу данных на 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. продажа - ПК
  2. счет-фактура
  3. taxInvoice
  4. ДПП
  5. ППН
  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 голосов
/ 25 января 2019

Если вы хотите изменить 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;
}

Из документации - Прокрутите вниз до раздела Primary Keys:

Eloquent также предполагает, что каждая таблица имеет столбец первичного ключа названный идентификатор Вы можете определить защищенное $primaryKey свойство для переопределения это соглашение.

0 голосов
/ 25 января 2019

В этом запросе $user = User::where(‘userID’, $request->id); добавьте сначала (), как это $user = User::where(‘userID’, $request->id)->first();

...