Столбец не найден: 1054 Неизвестный столбец 'id' в 'where clause' (SQL: выберите count (*) в качестве агрегата из `item`, где` barcode` = A002 и `id` <> 12) - PullRequest
1 голос
/ 07 мая 2020

Я пытаюсь обновить свой элемент таблицы, но я использую уникальную проверку в своем контроллере, я установил primaryKey = 'item_id' в своей модели, но я продолжаю получать эту ошибку с указанием неизвестного идентификатора столбца eventho я установил primaryKey как item_id в моя модель, когда я пытаюсь использовать проверку: // 'barcode' => 'unique: item' // эта ошибка не появляется, и программа работает, но в уникальном штрих-коде она проверяет себя на наличие уникального столбца и терпит неудачу, но видит собственное поле. вот почему я меняю свою проверку на это: // 'barcode' => 'unique: item, barcode,'. $ item_id, // когда я пытаюсь обновить, он показывает мне эту ошибку: Столбец не найден: 1054 Неизвестный идентификатор столбца 'in' where clause '(SQL: выберите count (*) как агрегат из item, где barcode = A002 и id <> 12)

ItemController:

public function update(Request $request,$item_id)
    {
        $messages = [
            'unique' => 'Sorry this barcode already exist....',
        ];
        $this->validate($request,[
           'barcode' => 'unique:item,barcode,'.$item_id,
        ],$messages);
        $data = $request->except(['_token']);
        Item::where('item_id',$item_id)->update($data);
        return redirect('/item')->with('sukses','item successfully updated');
    }

это моя модель. php:

class Item extends Model
{
    protected $table = 'item';
    protected $primaryKey = 'item_id';
    protected $fillable = ['barcode','item_name','category_id','satuan_id','price'];

    public function category_r(){
        return $this->belongsTo('App\Category','category_id','category_id');
    }
    public function satuan_r(){
        return $this->belongsTo('App\Satuan','satuan_id','satuan_id');
    }
}

1 Ответ

1 голос
/ 07 мая 2020

Когда вы используете настраиваемый первичный ключ, вы также должны добавить его имя для проверки:

$this->validate($request,[
           'barcode' => 'unique:item,barcode,'.$item_id.',item_id'
        ],$messages);

https://laravel.com/docs/5.2/validation#rule -unique

...