Я думаю, что когда вы определяете String
, вы определяете объект. Поэтому вам нужно использовать .equals()
. Когда вы используете примитивные типы данных, вы используете ==
, но с String
(и любым объектом) вы должны использовать .equals()
.
Вся проблема в update
функции
public function update(Request $request, $id)
{
//
$mock = Mock::find($request->id);
return $mock->update([
'subject' => $request->subject,
'list' => $request->list
]);
}
Или, может быть,
public function update(Request $request, $id)
{
return Mock::where('subject', $request->subject)->update([
'list' => $request->list,
]);
}
Проверьте ваш метод update
:
public function update(Request $request, $id)
{
// ...
return Mock::where($subject, $subject)->update([ // <---------
$subject => $request['list'], // <-------
]);
// ...
}
В предложениях where
первым параметром является имя столбца, а не значение. То же самое относится и к обновлению атрибутов. Проверьте эту строку:
Mock::where($subject, $subject)->/** */
Сделайте это вместо:
Mock::where('subject', $subject)->/** */
Кстати, я не использовал ваш способ получения данных запроса, но в случае, если он возвращает null
значения, попробуйте этот подход:
$subject = $request->get('subject');
Наконец, при выполнении операции update
результатом является boolean
, а не обновленная запись. Итак, если вы ожидаете вернуть обновленный объект, сделайте это вместо:
public function update(Request $request, $id)
{
Mock::find($id);
$mock = Mock::where('subject', $subject)->first();
$mock->update(['subject' => $request->get('list')]);
return $mock->fresh();
}