【问题标题】:Laravel not passing query result from controller to viewLaravel 没有将查询结果从控制器传递给视图
【发布时间】:2016-10-19 15:53:50
【问题描述】:

Laravel 5.2 版

我的控制器文件:

<?php

namespace App\Http\Controllers;

use App\questions;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Http\Requests;

class Dashboard extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }
    public function fetchQuestions() {
        //
    }
    public function index(){
        $listQuestions=Auth::user()->questions()->pluck('question')->all();
        //dd($listQuestions);
        return view('forms.question',compact('listQuestions'));
    }
}

我的观点文件

<ul>
    @foreach ($listQuestions as $q)
        <li>{{ $q }}</li>
    @endforeach
    </ul>

$listQuestions 没有传递给视图。 但是在视图和控制器文件中的 dd($listQuestions) 上,我得到了这个

    array:2 [▼
  0 => "some question"
  1 => "another question"
]

它显示空视图页面,没有错误或输出 我在这里想念什么?

【问题讨论】:

  • 我也做过同样的事情,而且效果很好。也许你也可以显示dashboard.blade.php?

标签: php laravel laravel-5 laravel-5.2


【解决方案1】:

pluck() 方法通过键检索值。你想收藏一个:

$listQuestions = Auth::user()->questions()->get();

$q是一个对象,所以需要获取一个属性,即question

@foreach ($listQuestions as $q)
    <li>{{ $q->question }}</li>
@endforeach

【讨论】:

  • 还是没有输出
  • @JaskaranSinghPuri,如果你把{{ dd($q) }} 放在@foreach 子句之后,你会看到什么?
  • 这个questions {#185 ▼ #table: "questions" #fillable: array:3 [▶] #hidden: array:1 [▶] #connection: null #primaryKey: "id" #keyType: "int" #perPage: 15 +incrementing: true +timestamps: true #attributes: array:4 [▼ "question_id" =&gt; 8 "people_id" =&gt; 2 "question" =&gt; "some question" "created_at" =&gt; "2016-10-19" ] #original: array:4 [▶] #relations: [] #visible: [] #appends: [] #guarded: array:1 [▶] #dates: [] #dateFormat: null #casts: [] #touches: [] #observables: [] #with: [] #morphClass: null .... }
  • 好的,所以我上面的代码应该显示some question文本。
  • 我仍然得到一个空白页面
【解决方案2】:

你也可以像这样将变量传递给视图

return view('forms.question')
     ->with('listQuestions' , $listQuestions)

现在我相信您只是将字符串“listQuestions”传递给视图,因此它无法对其进行迭代。因此是空视图。

【讨论】:

    【解决方案3】:

    改变你的

       return view('forms.question',compact('listQuestions'));
    

       return view('forms.question',['listQuestions'=> $listQuestions]);
    

    应该可以的

    【讨论】:

    • 这个答案毫无用处,因为这两个代码示例返回相同的东西。请参阅有关 compact() 的手册:php.net/manual/en/function.compact.php
    • @Jan Willems 我知道这一点,但紧凑的函数有一些问题,因为我过去的经验是它不起作用,但另一种方法是传递数据的可靠方式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多