我写了一些代码,用于在插入新数据时将预订数据插入到数据库中,这将创建新行,因此我得到的是重复数据,因此,如果schedules_id等于存在,则需要存储数据schedules_id将座位数据存储到该表中数组格式,这是我的方法。
$booking = new Bookings();
$booking->users_id = 4;
$booking->schedules_id = $schedules_id;
$booking->buses_id = $buses_id;
$booking->routes_id = $routes_id;
$booking->seat = implode(',', $seat);
$booking->price = $request->price;
$booking->profile = 'pending';
答案 0 :(得分:0)
尝试
假设Bookings
是模型
$matchThese = ['schedules_id' => $schedules_id];
Bookings::updateOrCreate($matchThese,[
'seat' => implode(',', $seat)
]);
或
$data = $request->all();
$data['seat'] = implode(',', $seat);
$matchThese = ['schedules_id' => $schedules_id];
Bookings::updateOrCreate($matchThese, $data);
确保您在“预订”模型的$fillable
中添加了列
您可以在模型中进行投射
protected $casts = [
'seat' => 'array',
];
如果您使用数组转换,则$data['seat']
应该是数组
答案 1 :(得分:0)
您可以在模型上使用updateOrCreate
方法,因此请尝试以下方法:
$booking = Bookings::updateOrCreate(
['schedules_id' => $schedules_id, 'users_id' => 4 ], // match the row based on this array
[ // update this columns
'buses_id' => $buses_id,
'routes_id' => $routes_id,
'seat' => json_encode($seat),
'price' => $request->price,
'profile' => 'pending',
]
);
答案 2 :(得分:0)
currentUserId
您可以使用此firstORcreate laravel方法。此堆栈溢出页面上提供了有关其用法的更多说明。
但是,如果要将数据存储为数组,则可以在数据库中为数据创建text或json字段,并使用有效的序列化来处理它。 https://laravel.com/docs/5.8/eloquent-serialization
另一个堆栈溢出示例,回答了有关将数据存储在json中的问题 Laravel : How to store json format data in database?