我想请求帮助,请告知如何在laravel中解决此类问题
如何制作像车票应用程序一样的应用程序,以限制车辆A上有5个人,那么用户在预订时无法在列表框中选择车辆A(项目列表框carA禁用)。
我很困惑从哪里开始
我目前正在考虑创建3个表
users (id, name,car_id, created_at, updated_at)
cars (id, car_name, created_at, update_at)
我很困惑应该对控制器做些什么非常感谢
谢谢你们所有人,我可以迈出第一步。 目前在控制器上
public function create(){
$list=MCars::all();
return view('booking/create')->with('sent_list',$list);
}
视图上的
<select name="car" value="{{ old('car')}}">
@foreach($sent_list as $a)
<option value="{{$a->id}}">{{$a->car_name}}</option>
@endforeach
</select>
我只想要包含显示在视图
上的用户&lt; 5的汽车也许我应该把它放在某个地方
SELECT DISTINCT cars.id,cars.car_name,COUNT(users.car_id)来自汽车INNER JOIN用户ON cars.id = users.car_id
答案 0 :(得分:0)
您可以为用户注册,用户将插入他们的名字(根据您的表格),但我建议为登录系统插入新的列电子邮件和密码。如果他们没有登录,他们就不能预订车。他们必须注册并登录预订车。
用户登录后,可以预订汽车,必须为其创建表格。像这样的代码
$cars_id = request::get('id');
$total_passenger = DB::table('passenger')->WHERE('car_id',$cars_id);
if(count($data) < 5){
//do insert data into passenger
}else{
//windows alert / whatever
}
答案 1 :(得分:0)
关系可以是这样的:
用户
belogsTo
汽车和汽车hasMany
用户
所以Car模型类应该是:
..
class Car extends Model
{
public function users()
{
return $this->hasMany('App\User');
}
}
用户模型:
class User extends Model
{
public function car()
{
return $this->belongsTo('App\Car');
}
}
Eloquent会自动确定正确的外键。因此,这里Eloquent将假设用户模型上的外键是car_id
。
访问users
属性,访问用户集合。
$users = App\Car::find(1)->users;
foreach ($users as $user) {
//
}
在UserController
使用:
$user = App\User::find(1);
echo $user->car->name;
这就是Eloquent的作用!
现在使用限制(5)的自定义逻辑。
以用户身份检索汽车数量:
public function getTotalUsersAttribute()
{
return $this->hasMany('Car')->whereUserId($this->user_id)->count();
}
和
if(getTotalUsersAttribute() >= 5) {
// dismiss this function with an err msg
}
// otherwise add user to car
从official docs找到类似的案例和解决方案。