это может отличаться от вопросов, которые уже задавались здесь о вставке массивов в базу данных, но у меня это совсем другое.
Вот код:
public function something(Request $request)
{
$id = $request ->id;
$name = $request->name;
$money = $request ->money;
$data = array(
'name' => $name,
'money' => $money,
);
$z = User::where('id',$id)
->select('name','money')
->first();
$data2 = array(
'name' => $z->name,
'money' => $z->money,
);
$diff = array_diff($data,$data2);
$diff_name = array_keys($diff);
$diff_values = array_values($diff);
for ($i = 0; $i < count($diff_name); $i++) {
$z->$diff_name[$i] = $diff_values[$i];
$z->save();
}
return 'Success';
}
Модель:
class User extends Model
{
protected $table = 'users';
protected $fillable = ['name','money'];
public $timestamps = false;
}
$data:
array(2) { ["name"]=> string(9) "Somewhere" ["money"]=> string(7) "5123.00"}
$data2:
array(2) { ["name"]=> string(8) "Anywhere" ["money"]=> string(7) "5000.00"}
Так что я использую array_diff , чтобы определить, равны ли значения, введенные пользователем, исходному значению из базы данных, если есть разница в затем получите имя столбца ( $ diff_name ) и вставьте новое значение ( $ diff_value ). Я сделал это таким образом, так как мне понадобятся значения $ diff_name для целей журнала истории. Однако я получаю эту ошибку Array to string conversion
Заранее спасибо.