将用户限制为 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
您可以为用户注册,用户将输入他们的姓名(根据您的 table),但我建议为登录系统插入新的电子邮件和密码栏。如果他们不登录,他们就无法预订汽车。他们必须注册并登录才能预订汽车。
用户登录后,就可以订车了,必须先建表。代码是这样的
$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
中找到相似的案例和解决方案
想求助,请指教如何在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
您可以为用户注册,用户将输入他们的姓名(根据您的 table),但我建议为登录系统插入新的电子邮件和密码栏。如果他们不登录,他们就无法预订汽车。他们必须注册并登录才能预订汽车。
用户登录后,就可以订车了,必须先建表。代码是这样的
$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 carhasMany
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
中找到相似的案例和解决方案