我想在插入时根据user_types列出用户,所以我创建了两个表,每个表都有连接。每个模型PHP文件都有一个关系函数。并且我创建了jquery代码并创建了控制器功能,但是它不起作用,我不知道我在哪里犯了错误,请帮助我解决此问题。我附加了我编写的所有代码以及数据库。
用户类型数据库
用户数据库表
UserType ID和用户表usty_id具有连接
UserType模型
<?php
namespace Asset_Management_System;
use Illuminate\Database\Eloquent\Model;
class UserType extends Model
{
public function userpermission()
{
return $this->hasMany('Asset_Management_System\UserPermission');
}
public function user()
{
return $this->hasMany('Asset_Management_System\User');
}
}
用户模型
class User extends Authenticatable
{
public function usertype()
{
return $this->belongsTo('Asset_Management_System\UserType','usty_id');
}
}
插入表格
<div class="form-group">
<label>User Type</label>
<select class="form-control select2" style="width: 100%;" id="ust_id" name="ust_id">
<option selected="selected">Select User Type</option>
@foreach($UserType as $ust)
<option value="{{$ust->id}}">{{$ust->usty_name}}</option>
@endforeach
</select>
</div>
<div class="form-group">
<label>User</label>
<select class="form-control select2" style="width: 100%;" id="user_id" name="user_id">
<option selected="selected">Select User</option>
@foreach($User as $us)
<option value="{{$us->id}}">{{$us->us_fname}} {{$us->us_lname}}</option>
@endforeach
</select>
</div>
Controller
public function show(Request $request)
{
//echo $id;
if (!$request->usty_id) {
$html = '<option value="">'.trans('global.pleaseSelect').'</option>';
} else {
$html = '';
$user = User::where('usty_id', $request->usty_id)->get();
foreach ($user as $us) {
$html .= '<option value="'.$us->id.'">'.$us->us_fname.' '.$us->us_lname.'</option>';
}
}
return response()->json(['html' => $html]);
}
和Jquery
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
$("#ust_id").change(function(){
$.ajax({
url: "{{ route('WorkRequest.show') }}?usty_id=" + $(this).val(),
method: 'GET',
success: function(data) {
$('#user_id').html(data.html);
}
});
});
</script>
路线
Route::get('WorkRequest/show', 'WorkRequestController@show')->name('WorkRequest/show');
这是我进入表格时遇到的错误
缺少[Route:WorkRequest.show] [URI:WorkRequest / {WorkRequest}]所需的参数。 (查看:C:\ xampp \ htdocs \ Asset_Management_Laravel \ resources \ views \ layouts \ main.blade.php)
请帮助我解决此问题
此代码运行正常
<script type="text/javascript">
$(document).ready(function(){
// Department Change
$('#ust_id').change(function(){
// Department id
var id = $(this).val();
// Empty the dropdown
$('#user_id').find('option').not(':first').remove();
// AJAX request
$.ajax({
url: "{{ route('WorkRequest/show') }}?usty_id=" + id,
type: 'get',
dataType: 'json',
success: function(response){
//alert(response);
$('#user_id').html(response.html);
}
});
});
});
</script>
public function show(Request $request)
{
//echo $id;
$html = '';
$user = User::where('usty_id', $request->usty_id)->get();
foreach ($user as $us)
{
$html .= '<option value="'.$us->id.'">'.$us->us_fname.' '.$us->us_lname.'</option>';
}
return response()->json(['html' => $html]);
}
用此Route::post('workRequest/get_options','WorkRequestController@getOptions')->name('workRequest.options');
替换在路径上方,并放置在route :: resource()路径上方
和下面的ajax代码
$("#ust_id").change(function(){
let parameter = {'usty_id': $(this).val()};
$.ajax({
url: "{{ route('workRequest.options') }}",
method: 'POST',
data: parameter,
success: function(data) {
$('#user_id').html(data.html);
}
});
});
添加此Controller方法以获取选项
public function getOptions(Request $request)
{
if (!$request->usty_id) {
$html = '<option value="">'.trans('global.pleaseSelect').'</option>';
} else {
$html = '';
$user = User::where('usty_id', $request->usty_id)->get();
foreach ($user as $us) {
$html .= '<option value="'.$us->id.'">'.$us->us_fname.' '.$us->us_lname.'</option>';
}
}
return response()->json(['html' => $html]);
}