Laravel 如何检索所选的选项值?
嗨,伙计们,这里是拉威尔的新朋友!我正在使用选择选项下拉列表第一个选择包含国家,第二个选择包含国家,现在当我尝试在数据库中存储时,我没有得到正确的选择状态,而我总是在第二个选择选项中得到第一个状态!!我正在使用查询生成器 这就是我检索国家和州的方式 注:dd($impact);应该检索所选状态,而不是检索选择列表上的第一个值 所以我的问题是如何让它检索正确的选定状态!?希望我的问题是明确的,提前谢谢 更新: 在第一个选择选项中,我有国家名称,在第二个选项中,我有国家名称 州每个国家最多有3个州,假设国家A有3个州A1、A2和A3,我想从选择选项值中选择州A2,而不是像我在问题中的情况那样默认获得A1 更新:我正在使用VueJs 这是表格代码Laravel 如何检索所选的选项值?,laravel,laravel-query-builder,Laravel,Laravel Query Builder,嗨,伙计们,这里是拉威尔的新朋友!我正在使用选择选项下拉列表第一个选择包含国家,第二个选择包含国家,现在当我尝试在数据库中存储时,我没有得到正确的选择状态,而我总是在第二个选择选项中得到第一个状态!!我正在使用查询生成器 这就是我检索国家和州的方式 注:dd($impact);应该检索所选状态,而不是检索选择列表上的第一个值 所以我的问题是如何让它检索正确的选定状态!?希望我的问题是明确的,提前谢谢 更新: 在第一个选择选项中,我有国家名称,在第二个选项中,我有国家名称 州每个国家最多有3个州,
<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>
选择器方向
能源
水螅
环境
修正
P.T.T
旅游业
运输
特拉沃公众酒店
教育
高级工程师
城市企业
编队职业队
桑特
青年体育文化
保护协会
基础设施管理人员
栖息地
商业
日志
使用专业人员
弗雷特
Selectner Daira:
选择国家
{{data.name}
选择者公社:
选择状态
{{data.commune}
印度:
这是我的剧本
<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>
导出默认值{
安装的(){
console.log('组件已安装')
},
数据(){
返回{
国家:0,
国家:[],
州:0,
国家:[]
}
},
方法:{
getCountries:function(){
获取('/api/getCountries'))
.然后(功能(响应){
this.countries=response.data;
}.约束(这个);
},
getStates:function(){
get(“/api/getStates”{
参数:{
country\u id:this.country
}
}).然后(功能(响应){
this.states=response.data;
}.约束(这个);
}
},
已创建:函数(){
这是getCountries()
}
}
您能发布dd($request->all())
的结果吗
假设您的选择名称为daira and impact,您应该能够通过以下方式获得发布值:
public function store(Request $request)
{
$daira = $request->daira;
$impact = $request->impact;
}
我理解您的问题第一个州返回,因为当您传递国家id时,它返回与该国家相关的所有州 所以您需要从状态下拉列表中传递状态Id
<select name="impact">
<option value="id">{{ STATE NAME }} </option>
</select>
希望你能理解你的疑问 我假设
$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\u id=$request->state
我想你的表格里有状态
$state = DB::table("states")
->where("country_id",$request->daira)
->where('id', $state_id)
->first();
$impact = $state->commune
检查来自请求
dd($request->all())的内容代码>它从我的form@MohamedMidou什么是社区?是州名吗?@AmitSenjaliya是的,是州名name@MohamedMidou你能试试dd($state)代码>。正确的状态检索?这回答了我一半的问题,因为代码只检索所选值的id我希望“名称”存储在数据库中,而不是“id”,所以您希望存储名称而不是id?然后,您应该使用名称作为值而不是ID来创建选择框,例如:abc或blade{{Form::select('daira',\App\daira::pull('name','name'))}我明白这一点,您能否为我提供一个解决方案,这样我就不会选择第一个状态,而是选择正确的选择状态。谢谢:)@mohamedmitou您可以在状态查询中直接传递imapct。我已经更新了答案。你的vue js非常完美。现在,您可以使用状态id检索状态。我正在检索状态id,并使用该id获取该状态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 = DB::table("states")
->where("country_id",$request->daira)
->where('id', $state_id)
->first();
$impact = $state->commune