限制用户仅选择laravel列表框中的项目

时间:2018-03-26 04:01:48

标签: laravel limit

我想请求帮助,请告知如何在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

2 个答案:

答案 0 :(得分:0)

  1. 您可以为用户注册,用户将插入他们的名字(根据您的表格),但我建议为登录系统插入新的列电子邮件和密码。如果他们没有登录,他们就不能预订车。他们必须注册并登录预订车。

  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
    }
    

答案 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找到类似的案例和解决方案。