为什么我无法在Laravel 5.8中获得价值?

时间:2019-09-17 12:56:57

标签: laravel laravel-5.8

如果我使用{{$slider->name}},则无法从数据库中检索数据。但同时,它可以检索id的数据。如果我使用{{$slider['name']}},则可以从数据库中检索名称。

有人可以告诉我这个问题的原因吗?
控制器

public function index()
{

    $sliders=Slider::all();
    //($sliders);
    return view('slider.list',compact('sliders'));
}

查看

@extends('master')

@section('content')

<section class="content-header">
    <h1>
        Slider List
    </h1>
</section>
<section class="content">
    <div class="row">
        <div class="col-xs-12">
            <div class="box">
                <div class="box-header">
                    @if($message = Session::get('success'))
                        <div class="alert alert-success alert-dismissible">{{ $message }}</div>
                    @endif
                </div>
                <div class="box-body">
                    <table id="pageList" class="table table-bordered table-striped table-responsive">
                        <thead>
                        <tr>
                            <th>SL</th>
                            <th>Slider Name</th>
                            <th>Image</th>
                            <th>Published</th>
                            <th>Created by</th>
                            <th>Created at</th>
                            <th>Action</th>
                        </tr>
                        </thead>
                        <tbody>
                        @foreach($sliders as $slider)
                            <tr>
                                <td>{{$slider->id}}</td>
                                <td>{{$slider['name']}}</td>
                                <td>
                                    @if($images=\App\SliderImage::where('slider_id','=',$slider->id)->get())
                                        @foreach($images as $image)
                                            <img width="80px" alt="image"
                                                 src="{{ asset('images/sliderImage/'.$image['image_path']) }}">
                                        @endforeach
                                    @endif

                                </td>
                                <td>{{$slider->published}}</td>
                                <td>{{$slider->created_By}}</td>
                                <td>{{$slider->created_at}}</td>
                                <td>
                                    <form action="{{route('slider.destroy',$slider->id)}}" method="POST">
                                        <a href="{{route('slider.edit',$slider->id)}}"
                                           class="btn btn-sm btn-success">Edit</a>
                                        <a href="" class="btn btn-sm btn-info">View</a>
                                        @CSRF
                                        @method('DELETE')
                                        <button type="submit" class="btn btn-sm btn-danger"
                                                onclick="return confirm('Are you sure to delete?')">Delete
                                        </button>
                                    </form>
                                </td>
                            </tr>
                        @endforeach
                        </tbody>
                        <tfoot>
                        <tr>
                            <th>SL</th>
                            <th>Slider Name</th>
                            <th>Image</th>
                            <th>Published</th>
                            <th>Created by</th>
                            <th>Created at</th>
                            <th>Action</th>
                        </tr>
                        </tfoot>
                    </table>
                </div>

            </div>

        </div>

    </div>

</section>

@endsection

2 个答案:

答案 0 :(得分:0)

这取决于您的控制器方法。 如果您要在这样的视图中传递数组。

$slider = array(
    "id"=>1,
    "name"=>"slider_name",
);

return view('view_name',['slider'=>$slider]);

您必须编写 $ slider ['name'] 才能检索数据。

类似地,如果您直接使用从雄辩生成的对象。 像这样

$slider = Slider::where('somecondition','value')->get();
return view('view_name',['slider'=>$slider]);

现在您可以访问像这样的数据=> $ slider-> name;

答案 1 :(得分:0)

Laravel中的紧凑功能

我们通常在Laravel中使用compact将值发送到视图。像这样:

    $sliders=Slider::all();

    return view('slider.list',compact('sliders'));

Laravel希望将数组传递给视图帮助器功能。视图帮助器函数中的第二个参数是一个数组,其中键是变量的名称,而值是这些变量的内容。这些变量将在我们的视图中可用。

您还可以使用提取PHP函数从关联数组中导入变量,例如从comapct()函数创建的数组。 extract将把变量从数组导入到当前符号表中。

请参阅link