【发布时间】:2021-10-10 06:51:57
【问题描述】:
我有两个表“用户”和“预测”,用户表有两列“Org1”和“Org2”,预测表“CurrOg1”和“CurrOrg2”中有相同的列。当用户注册时,他必须从下拉列表中选择“Org1”和“Org2”,并将选定的值分配给用户。现在我想检查用户表中的“Org1”和“Org2”值以及登录到应用程序的当前用户的预测表。例如,如果用户“Org1”在注册时存储为“abc”,他必须只能查看“CurrOrg”为“abc”的数据,对于“Org2”也是如此。 当我尝试获取结果时出现数据表错误。
这是我的注册控制器和查看代码:
class RegisterController extends Controller
{
/*
|--------------------------------------------------------------------------
| Register Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users as well as their
| validation and creation. By default this controller uses a trait to
| provide this functionality without requiring any additional code.
|
*/
use RegistersUsers;
/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
'Org1' => [ 'string'],
'Org2' => ['string'],
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\Models\User
*/
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
'Org1' => $data['Org1'],
'Org2' => $data['Org2'],
]);
Mail::to($data['email'])->send(new WelcomeMail($user));
return $user;
}
public function showRegistrationForm()
{
$Org1_list = DB::table('predictions')
->select('CurrOrg1')
->groupBy('CurrOrg1')
->orderBy('CurrOrg1', 'ASC')
->get();
$Org2_list = DB::table('predictions')
->select('CurrOrg2')
->groupBy('CurrOrg2')
->orderBy('CurrOrg2', 'ASC')
->get();
return view('auth.register', compact('Org1_list','Org2_list'));
}
}
注册查看:
<div class="form-group row">
<label for="Org1" class="col-md-4 col-form-label text-md-right">Org1</label>
<div class="col-md-6">
<select class="form-control" name="Org1" id="Org1">
<option value="">Select Org1</option>
@foreach($Org1_list as $use)
@if(!empty($use))
<option value="{{$use->CurrOrg1}}">{{$use->CurrOrg1}}</option>
@endif
@endforeach
</select>
@error('Org1')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="Org2" class="col-md-4 col-form-label text-md-right">Org2</label>
<div class="col-md-6">
<select class="form-control" name="Org2" id="Org2">
<option value="">Select Org2</option>
@foreach($Org2_list as $use)
@if(!empty($use))
<option value="{{$use->CurrOrg2}}">{{$use->CurrOrg2}}</option>
@endif
@endforeach
</select>
@error('Org2')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
这是我的预测控制器:
{
$user=DB:: table('users')
->select('id','Org1','Org2','email')
->get();
if($CurrOrg1 == $user->Org1 && Auth::user()->email == $user->email)
{
$data = DB:: table('predictions')
->select('id','EmployeeNumber','Role','Region','CurrOrg1','CurrOrg2','RiskZone','Probablity','Rating','Feedback','Gender','CurrOrg3','CurrOrg4','CurrOrg5','ProfessionalClassification','Local_Expat','EmployeeRoleSeniority','FeedRisklevel','Feedinfluencers','Action','Fname','Lname','Avgweekhr')
->get();
}
}
return datatables()->of($data)
->addColumn('Feedback', function($data)
{
if($data->Action == 'No')
{
return "<a href='#' style='background-color:#CA0088;color:#fff' class='btn btn-sm Feedback' id='".$data->id."'>Feedback</a>";
}
else
{
return "<a href='#' style='background-color:#00A300;color:#fff' class='btn btn-sm Feedback' id='".$data->id."'>Feedback</a>";
}
})
->escapeColumns([])
->make(true);
}
这是我加载数据的方式:
$(document).ready(function(){
fill_datatable();
function fill_datatable(BusinessUnit = '', CurrOrg1 = '', CurrOrg2 = '', Role = '', Region = '' , Gender = '', CurrOrg3 = '' , CurrOrg4 = '', CurrOrg5 = '', ProfessionalClassification = '')
{
var dataTable = $('#members_data').DataTable({
dom: 'Bfrtip',
buttons: ['excel'],
processing: true,
serverSide: false,
ajax:{
url: "{{ route('Predictions.index') }}",
data:{BusinessUnit:BusinessUnit,CurrOrg1:CurrOrg1,CurrOrg2:CurrOrg2,Role:Role,Region:Region,Gender:Gender,ProfessionalClassification:ProfessionalClassification,CurrOrg3:CurrOrg3,CurrOrg4:CurrOrg4,CurrOrg5:CurrOrg5}
},
columns: [
{
data: 'EmployeeNumber',
name: 'EmployeeNumber',
render:function(data, type, row){
//console.log(row)}
//return "a"}
return "<a href='/detail/"+ row.id +"'>" + row.EmployeeNumber+"</a>"}
},
{
data:'Fname',
name:'Fname'
},
{
data:'Lname',
name:'Lname'
},
{
data:'Role',
name:'Role'
},
{
data:'Region',
name:'Region'
},
{
data:'CurrOrg1',
name:'CurrOrg1'
},
{
data:'CurrOrg2',
name:'CurrOrg2'
},
});
有人可以建议我在这里做错了什么,或者如何解决上述问题。提前致谢!
【问题讨论】:
-
能否请您显示数据表中的错误?
-
@Tayyabmehar 这是错误:DataTables 警告:table id=members_data - Ajax 错误。有关此错误的更多信息,请参阅datatables.net/tn/7
-
您是否从控制器调试过数据?您收到什么格式的数据?
标签: jquery laravel eloquent datatables laravel-8