将用户限制为 laravel 列表框中的 select 项

limiting user to only select items on laravel listbox

想求助,请指教如何在laravel中解决此类问题

如何做一个类似车票应用的应用,限制如果A车上有5个人,那么用户在预订时不能在listbox中选择A车(item listbox carA disable)。

我不知道从哪里开始

我目前正在考虑创建 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>

我只想要包含 <5 名出现在视图中的用户的汽车

也许我应该把它放在某个地方

SELECT DISTINCT cars.id, cars.car_name, COUNT(users.car_id) from cars INNER JOIN users ON cars.id = users.car_id

  1. 您可以为用户注册,用户将输入他们的姓名(根据您的 table),但我建议为登录系统插入新的电子邮件和密码栏。如果他们不登录,他们就无法预订汽车。他们必须注册并登录才能预订汽车。

  2. 用户登录后,就可以订车了,必须先建表。代码是这样的

    $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
    }
    

关系可以是这样的:

a user belogsTo a car and the car hasMany users

所以汽车模型 class 应该是:

..
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 的工作原理!

现在使用 limit(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.

中找到相似的案例和解决方案