【问题标题】:join two tables using laravel 8 , without id使用 laravel 8 连接两个表,没有 id
【发布时间】:2021-06-14 05:10:51
【问题描述】:

我在数据库中有以下两个表:

我有以下看法:

<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="&nbsp;">&nbsp;</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?

【问题讨论】:

  • 您是打算将$country-&gt;name 作为选项元素的值,还是country-&gt;id&lt;option value="{{$country-&gt;name}}"&gt;
  • 我的意思是
  • 对于&lt;option value="{{$country-&gt;name}}"&gt;let country_id = this.value; 表示country_id 将是$country-&gt;name
  • 是的,那么我如何在我的控制器中获取国家/地区 ID 以获取州名称
  • 在这一行:$states = State::where('country_id',$country_id)->get();

标签: jquery ajax laravel


【解决方案1】:

首先,您的 HTML 需要更改,因此国家/地区 ID 是选项元素选择的值。

@foreach($countries as $country)
  <option value="{{$country->id}}">{{$country->name}}</option>
@endforeach

然后控制器应该按预期工作并返回具有该国家/地区 ID 的州,但请记住,您应该再次使用 $state-&gt;id 作为选项元素的值。

foreach($states as $state) {
  $option .= '<option value = "'.$state->id.'">'.$state->name.'</option>';
}

【讨论】:

  • 谢谢你的帮助,但我想要的是价值; value="{{$country->name}}"
猜你喜欢
  • 2021-04-29
  • 1970-01-01
  • 2014-09-30
  • 2018-01-15
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
  • 2019-08-26
  • 1970-01-01
相关资源
最近更新 更多