foreach laravel总行数与计数不同

时间:2016-07-07 16:54:39

标签: php laravel foreach

@extends('layouts.app')

@section('content')
    <h2>{{ $product->name }}</h2>
    <a href="{{action('VarietiesController@create')}}/{{$product->id}}"> Добавить новый вариант </a>
    </br>
    {{$varieties->count()}}
    {{$varieties->first()->name}}
    <table>
        <tr>
            <td>id</td>
            <td>Название</td>
            <td>Стоимость</td>
            <td>Действие</td>
            <td>Действие</td>
        </tr>
        @foreach ($varieties as $variety)
            <tr>
                <td>{{$variety->id}}</td>
                <td>{{$variety->name}}</td>
                <td>{{$variety->cost}}</td>
                <td><a href="{{action('VarietiesController@edit', ['VarietyID' => $variety->id])}}">Изменить</a></td>
                <td>
                    <form method="POST" action="{{action('VarietiesController@destroy', ['VarietyID' => $variety->id])}}">
                        <input type="hidden" name="_method" value="delete"/>
                        <input type="hidden" name="_token" value="{{csrf_token()}}"/>
                        <input type="submit" value="Удалить"/>
                    </form>
                </td>
            </tr>
        @endforeach
    </ul>
    @if(Session::has('message'))
        {{Session::get('message')}}
    @endif
@endsection

有2行的预期表,但我有0行的表但是 功能计数相等2.该代码有什么问题?

在控制器中我改变了

'varieties' => Variety::where('product_id','=',3) 

'varieties' => Variety::all() 

那回归了我的预期。

返回带有PRODUCT_ID = 3的第一个电话

 Американо
     Добавить новый вариант  
     2 Большой 
    id Название Стоимость Действие Действие 

2 个答案:

答案 0 :(得分:1)

试试吧

Variety::where('product_id','=',3)->get();

在您的情况下,您只是构建查询,但未获取数据,要获取应使用 get()方法的数据,如果要获取所有数据,只需调用 all()方法,阅读Laravel文档(:

答案 1 :(得分:1)

使用get时,您需要调用where功能。将您的代码更改为:

'varieties'=>Variety::where('product_id','=',3)->get();

希望这有帮助。