jquery - 使用 laravel 8 连接两个表,没有 id
问题描述
我在数据库中有以下两个表:
我有以下看法:
<div class="form-row">
<div class="col-sm-6">
<label>Pays</label>
<select class="form-control select2-single" data-width="100%" name="pays" id="pays">
<option label=" "> </option>
@foreach($countries as $country)
<option value="{{$country->name}}">{{$country->name}}</option>
@endforeach
</select>
</div>
<div class="col-sm-6">
<label>Ville</label>
<select class="form-control select2-single" data-width="100%" name="ville" id="ville">
</select>
</div>
</div>
我的控制器:
public function getAllStates()
{
$country_id = request('country');
$states = State::where('country_id',$country_id)->get();
$option = "<option value = ''> Select State</option>";
foreach($states as $state){
$option.= '<option value = "'.$state->name.'">'.$state->name.'</option>';
}
return $option;
}
我的脚本:
<script type="text/javascript">
$(document).ready(function(){
$("#pays").change(function(){
let country_id = this.value;
$.get('/getState?country='+country_id,function(data){
$("#ville").html(data);
});
});
});
</script>
我想在第二个下拉列表中列出与一个国家相关的所有州。
所以在我的下拉国家中,我传递了一个国家名称并记下一个国家ID,我怎样才能加入这两个表来获取一个国家的所有州名,而不是国家ID?
解决方案
首先,您的 HTML 需要更改,因此国家 ID 是选项元素选择的值。
@foreach($countries as $country)
<option value="{{$country->id}}">{{$country->name}}</option>
@endforeach
然后控制器应该按预期工作并返回具有该国家/地区 ID 的州,但请记住,您应该$state->id
再次用作选项元素的值。
foreach($states as $state) {
$option .= '<option value = "'.$state->id.'">'.$state->name.'</option>';
}
推荐阅读
- shell - 如何使用文档的行数在 shell 中设置“for i in seq”或等效项
- python - 如何检查单个朴素贝叶斯预测的结果?
- javascript - for循环检查哪个日期是星期几(周末或工作日)
- java - 请求许可后继续 Android Studio
- azure - 如何将消息从 ServiceBusQueueTrigger Azure 函数发送到 Durable Function
- json - 使用 jq 将 JSON 导出为 CSV
- python-3.x - 将 csv 文件数据导入 pandas 数据框时出错
- typescript - 通过 Typescript 中实现的接口捕获错误
- json - JsonSerializable 与 dart 中的子类
- unit-testing - 如何从 Visual Studio 中运行 XUnit 测试?