laravel - 如何检索选定的选项值?
问题描述
大家好,这里是 laravel 的新手!我正在使用选定选项下拉列表第一个选择包含国家,第二个包含州,现在当我尝试将数据库存储在数据库中时,我没有得到正确的选定状态,而是我总是在第二个中获得第一个状态选择选项!!我正在使用查询生成器。
这就是我检索国家和州的方式
public function store(Request $request)
{
$country = DB::table("countries")->where("id",$request->daira);
$state = DB::table("states")->where("country_id",$request->daira);
$daira = $country->get()->first()->name;
$impact = $state->get()->first()->commune;
dd($impact);
}
注意:dd($impact); 应该检索选定的状态,而不是检索选择列表中的第一个值
所以我的问题是如何让它检索正确的选定状态!?希望我的问题很清楚 在此先感谢。
更新: 在第一个选择选项中我有国家名称,在第二个选项中我有州每个国家最多有 3 个州,假设国家 A 有 3 个州 A1、A2 和 A3 我想从选择选项值中选择 A2 州而不是像我在问题中的情况那样默认获得 A1
更新:我正在使用 VueJs
这是表格代码
<template>
<div class="modal-body">
<div class="form-group">
<select name="direction" class="form-control">
<option value="">Selctionner Direction</option>
<option value="ENERGIE">ENERGIE</option>
<option value="HYDRAULIQUE">HYDRAULIQUE</option>
<option value="ENVIRONNEMENT"> ENVIRONNEMENT</option>
<option value="AMENAGEMENT">AMENAGEMENT</option>
<option value="P.T.T">P.T.T</option>
<option value="TOURISME">TOURISME</option>
<option value="TRANSPORT">TRANSPORT</option>
<option value="TRAVAUX PUBLICS">TRAVAUX PUBLICS</option>
<option value="EDUCATION">EDUCATION</option>
<option value="ENSEIGNEMENT SUPERIEUR">ENSEIGNEMENT SUPERIEUR</option>
<option value="URBANISME">URBANISME</option>
<option value="FORMATION PROFESSIONNELLE">FORMATION PROFESSIONNELLE</option>
<option value="SANTE">SANTE</option>
<option value="JEUNESSE-SPORTS CULTURE">JEUNESSE-SPORTS CULTURE</option>
<option value="PROTECTION SOCIALE">PROTECTION SOCIALE</option>
<option value="INFRASTRUCTURES ADMINISTRATIVES">INFRASTRUCTURES ADMINISTRATIVES</option>
<option value="HABITAT">HABITAT</option>
<option value="COMMERCE">COMMERCE</option>
<option value="LOGEMENT">LOGEMENT</option>
<option value="LOCAUX A USAGE PROFESSIONNELE">LOCAUX A USAGE PROFESSIONNELE</option>
<option value="FORET">FORET</option>
</select>
</div>
<div class="form-group">
<label>Selctionner Daira:</label>
<select name="daira" class='form-control' v-model='country' @change='getStates()'>
<option value='0' >Select Country</option>
<option v-for='data in countries' :value='data.id'>{{ data.name }}</option>
</select>
</div>
<div class="form-group">
<label>Selctionner Commune:</label>
<select name="impact" class='form-control' v-model='state'>
<option value='0' >Select State</option>
<option v-for='data in states' :value='data.id'>{{ data.commune }}</option>
</select>
</div>
<div class="form-group">
<label >Intitule :</label>
<input type="text" class="form-control" name="intitule" required>
</div>
</div>
</template>
这是我的剧本
<script>
export default {
mounted() {
console.log('Component mounted.')
},
data(){
return {
country: 0,
countries: [],
state: 0,
states: []
}
},
methods:{
getCountries: function(){
axios.get('/api/getCountries')
.then(function (response) {
this.countries = response.data;
}.bind(this));
},
getStates: function() {
axios.get('/api/getStates',{
params: {
country_id: this.country
}
}).then(function(response){
this.states = response.data;
}.bind(this));
}
},
created: function(){
this.getCountries()
}
}
</script>
解决方案
希望您了解您的查询,我认为$request->daira
是国家/地区 ID
public function store(Request $request)
{
//here you selected a country with provided country ID
//this returns Query Builder object
$country = DB::table("countries")->where("id",$request->daira);
//here you are returning all the states where the country_id is
//the provided country ID
//Note that this returns all the states (Query Builder object)
$state = DB::table("states")->where("country_id",$request->daira);
//You return `Illuminate\Support\Collection` then you got the first item
//from collection
$daira = $country->get()->first()->name;
//You returned all the states `Illuminate\Support\Collection`
//and you picked the first state from the collection,
//which is likely the first item in your
//form select field options
$impact = $state->get()->first()->commune;
dd($impact);
}
因为您没有指定 state_id,所以您将始终获得给定国家下所有州的列表。我假设表关系是 Country -> hasMany -> State
您需要添加 state_id 作为约束,因此只选择一个状态
$state_id = $request->state
我假设您的表格中有状态
$state = DB::table("states")
->where("country_id",$request->daira)
->where('id', $state_id)
->first();
$impact = $state->commune
推荐阅读
- c# - 在 IIS 服务器中部署 asp.net Web 应用程序时如何解决水晶报表问题
- android - Android 应用和展示位置
- java - MAC 中 ProcessBuilder 和 FFMPEG 的权限被拒绝
- java - 查询 SELECT 时出现 SQLiteException
- jupyter-notebook - 带有自定义单用户图像的 Jupyterhub 为“/home/jovyan/work”引发“没有这样的文件或目录”
- c++ - 编译器选择不使用 REP MOVSB 指令进行字节数组移动
- apache-spark - 如何根据列数据将数据与数据框中的行一起展平(或分解)?
- django - 具有非模型字段序列化的 AttributeError
- android - Android 上的 AWS Cognito - 如何从刷新令牌中获取新会话
- python - 将非线性单变量回归拟合到 Python 中的时间序列数据