Laravel爆炸并加入

时间:2017-08-08 18:57:20

标签: php mysql laravel

我有一个问题,我在数据库中请求一些数据,其中一个连接在一起,字段的形式如下:

 1 | 2 | 3 | ... | n-1 | n,

问题是每个数值我都必须与另一个表连接。

$Metro  = DB::table('fijacion')->where('tipo','Metro')->join('adp', 'fijacion.id', '=', "adp.id_fijacion")->get();

我遇到的解决方案就是将链条划分为

foreach($Metro as $Metro){ 
    $array = explode("|", $Metro->nr);
    $MetroXI = DB::table('users')
              ->select('numero','nombre','apellido')
              ->whereIn('numero',$array)
              ->where('categoria', 1)
              ->join('puntos', 'users.numero', '=', "puntos.nr")
              ->orderBy('puntos.Total', 'asc')
              ->get();
 }

这打破了链条,但它只显示了一个结果

我知道这让人很难理解,但是如果有人可以指导我如何正确地做法,或者有些想法会感激不尽

$地铁:

[{"id":1,"semana":32,"fecha":"2017-08-11","dia":"Viernes","tipo":"Metro","categoria":null,"hora":"20:30 ","cancha":"CAPITOL ","partido":"CAPITOL \u2013 TABAR\u00c9 ","nr_1":null,"arbitro_1":null,"nr_2":null,"arbitro_2":null,"nr_3":null,"arbitro_3":null,"aux":1,"updated_at":"2017-08-07 12:04:04","created_at":"2017-08-07 12:03:57","id_fijacion":1,"nr":"7|22|29|31|32|40|53|59|66|67|68|77|5|12|13|17|18|20|24|27|28|33|35|37|44|46|50|52|61|64|65|75|23|25|26|39|47|48|51|58|69|74|80|82|83|86|93|96|104|109|117|120","designado":0},{"id":2,"semana":32,"fecha":"2017-08-11","dia":"Viernes","tipo":"Metro","categoria":null,"hora":"20:30 ","cancha":"MIRAMAR ","partido":"MIRAMAR \u2013 COL\u00d3N ","nr_1":null,"arbitro_1":null,"nr_2":null,"arbitro_2":null,"nr_3":null,"arbitro_3":null,"aux":1,"updated_at":"2017-08-07 12:04:04","created_at":"2017-08-07 12:03:57","id_fijacion":2,"nr":"7|22|29|31|32|40|53|59|66|67|68|77|5|12|13|17|18|20|24|27|28|33|35|37|44|46|50|52|61|64|65|75|23|25|26|39|47|48|51|58|69|74","designado":0},{"id":3,"semana":32,"fecha":"2017-08-11","dia":"Viernes","tipo":"Metro","categoria":null,"hora":"20:30 ","cancha":"SAYAGO ","partido":"ATENAS \u2013 AURIBLANCO ","nr_1":null,"arbitro_1":null,"nr_2":null,"arbitro_2":null,"nr_3":null,"arbitro_3":null,"aux":1,"updated_at":"2017-08-07 12:04:04","created_at":"2017-08-07 12:03:57","id_fijacion":3,"nr":"28|33|35|37|44|46|50|52|61|64|65|75|23|25|26|39|47|48|51|58|69|74|80|82|83|86|93|96|104|109|117|120","designado":0},{"id":4,"semana":32,"fecha":"2017-08-11","dia":"Viernes","tipo":"Metro","categoria":null,"hora":"20:30 ","cancha":"CORD\u00d3N \u2013 SIN P\u00daBLICO VISITANTE ","partido":"CORD\u00d3N \u2013 25 DE AGOSTO ","nr_1":null,"arbitro_1":null,"nr_2":null,"arbitro_2":null,"nr_3":null,"arbitro_3":null,"aux":1,"updated_at":"2017-08-07 12:04:05","created_at":"2017-08-07 12:03:57","id_fijacion":4,"nr":"7|22|29|31|32|40|53|59|66|67|68|77|5|12|13|17|18|20|35|37|44|46|50|52|61|64|65|75|23|25|26|39|47|48|51|58|69|74|80|82|83|86|93|96|104|109|117|120","designado":0},{"id":5,"semana":32,"fecha":"2017-08-11","dia":"Viernes","tipo":"Metro","categoria":null,"hora":"20:30 ","cancha":"STOCKOLMO ","partido":"STOCKOLMO \u2013 UNI\u00d3N ATL\u00c9TICA ","nr_1":null,"arbitro_1":null,"nr_2":null,"arbitro_2":null,"nr_3":null,"arbitro_3":null,"aux":1,"updated_at":"2017-08-07 12:04:05","created_at":"2017-08-07 12:03:57","id_fijacion":5,"nr":"7|22|29|31|32|40|53|59|66|67|68|77|5|12|13|17|18|20|24|27|28|33|35|37|44|46|50|52|61|64|65|75|23|25|26|39|47|83|86|93|96|104|109|117|120","designado":0}]

在nr值中我必须​​加入它

感谢@yoeunes loger avanasa,但现在我认为我有错误。

我意识到我没有将$ Metro与$ MetroXI []

联系起来

以下是我的.blade的参数 这是我的观点:

                @foreach($Metro as $Metro)
                    <tr>
                    <th>{{$Metro->dia}}</th>
                    <th>{{$Metro->fecha}}</th>
                    <th>{{$Metro->categoria}}</th>
                    <th>{{$Metro->hora}}</th>
                    <th>{{$Metro->cancha}}</th>
                    <th>{{$Metro->partido}}</th>
                    <th>@php$array = explode("|", $Metro->nr);$pepe = count($array);@endphp{{ $pepe }}</th>


                    <select class="form-control" name="select1" id="arbitro_1">
                        <option selected="true" disabled="disabled">Selecione 1º Arbitro</option>
                        <option disabled="disabled">---Internacional---</option>
                        @foreach($MetroXI as $MetroXI)
                          <option value="{{$MetroXI->numero}}">{{$MetroXI->nombre}}. {{$MetroXI->apellido}}</option>
                        @endforeach
                    </select>

        @endforeach

你给我的错误是:

  

此集合实例上不存在Property [nr]。

与3个变量一起发生。

1 个答案:

答案 0 :(得分:1)

尝试使用它:

$MetroXI = [];
foreach($Metro as $Metro){ 
    $array = explode("|", $Metro->nr);
    $MetroXI[] = DB::table('users')
              ->select('numero','nombre','apellido')
              ->whereIn('numero',$array)
              ->where('categoria', 1)
              ->join('puntos', 'users.numero', '=', "puntos.nr")
              ->orderBy('puntos.Total', 'asc')
              ->get();
 }

然后检查$MetroXI数组,它将包含所有结果;