#laravel #eloquent
#laravel #красноречивый
Вопрос:
Я пытаюсь обновить запись в базе данных и использую запрос формы для проверки уникальных полей, но я не могу передать идентификатор в эту форму, потому что я просто использую маршрут, подобный этому:
Route::resource('ganado/engorde', 'GanadoController')->middleware('auth');
В моем контроллере обновления:
public function update(GanadoEditFormRequest $request, $id)
{
$bovino = Ganado::findOrFail($id);
...
}
Это мой запрос формы:
public function rules()
{
return [
'codigo_ganado' => ['required',
Rule::unique('ganado')
->ignore($this->id, 'id_ganado')
->where('lote_actual', $this->lote_actual)
->where('ganaderia', $this->ganaderia)
],
];
}
Я попытался передать напрямую id = «85», просто чтобы проверить, работает ли эта «игнорируемая» вещь, и я тоже получаю и ошибку =
id
<> 85 вместо id
= 85.
Как я могу правильно игнорировать текущую запись обновления?
Редактировать:
Это моя таблица «Ganado»:
Комментарии:
1. вы использовали что-то подобное
url.com/ganado/engorde/85
для поиска своего элемента?2. да, мой контроллер обновления работает нормально, вот пример:
http://ganaderia.test/ganado/engorde/85/edit
@Atlas-Pio
Ответ №1:
Поскольку я не знаю, как выглядит ваш код, возможно, вы захотите попробовать это :
public function rules()
{
$id = $this->route('id')
// Or
$id = $this->route('engorde')
return [
'codigo_ganado' => ['required',
Rule::unique('ganado')
->ignore($id, 'id_ganado')
->where('lote_actual', $this->lote_actual)
->where('ganaderia', $this->ganaderia)
],
];
}
Итак, на основе вашей Ganado
таблицы вашей основной является таблица id_ganado
, которая laravel всегда распознает таблицы с id
в качестве основной таблицы, поэтому вам может потребоваться добавить
protected $primaryKey = 'id_ganado';
Редактировать: Обновить до ignore($id.',id_ganado')
Комментарии:
1. хорошо, второй работает, и я получаю идентификатор, но все еще получаю уникальное сообщение о проверке, просто чтобы проверить, получаю ли я идентификатор, я удалил ‘id_ganado’, чтобы получить ошибку sql, что столбец id неизвестен, и здесь я могу проверить, что я получаю идентификатор, почему все еще не работает, чтобы игнорировать текущую запись?
2. Вот ошибка, о которой я говорю:
Column not found: 1054 Unknown column 'id' in 'where clause' (SQL: select count(*) as aggregate from ganado where codigo_ganado = 0604 and id <> 85 and lote_actual = Lote-1 and ganaderia = VS)
просто чтобы проверить, получаю ли я правильный идентификатор3. да, вот почему я задал этот вопрос позже в вопросе, потому что я пытался передать идентификатор напрямую, просто чтобы проверить, работает ли он, и он не работал. Уже обновил вопрос с таблицей.
4. Я уже определил первичный ключ подобным образом в моей модели @Atlas-Pio
5. ммм, ты имеешь в виду с -> после слова игнорировать? потому что это неправильный способ выразить это