【问题标题】:Passing Results from 2 Queries in a Single Route in Laravel 5在 Laravel 5 中的单个路由中传递 2 个查询的结果
【发布时间】:2019-06-25 09:48:34
【问题描述】:

我正在尝试获取所有用户的帖子,以及仅来自当前用户的任务。所有都传递到具有单个功能和路由的单个页面中。它会返回一个错误页面。

控制器

public function getDashboard()
{
    $user = Auth::user();
    $userId = $user->id;
    $posts = Post::orderBy('created_at', 'desc')->get();
    $tasks = Task::where('employee_id', $userId )->get();

    return view('dashboard', compact('posts', 'tasks'));
}

路线

Route::get('/dashboard', [
    'uses' => 'PostController@getDashboard',
    'as' => 'dashboard',
])->middleware('auth');

刀片/视图

<div>
    @foreach($tasks as $task)
        <p data-taskId="{{ $task->id }}">{{ $task->task_body }}</p>
    @endforeach
</div>

【问题讨论】:

  • 你的问题在哪里?
  • 抱歉,不清楚。最上面的东西是我想要完成的,但当然它没有用。我尝试了 compact() 和 with() 但总是页面损坏。如果我删除帖子,它适用于每个任务,如果我删除它与 foreach 帖子正确返回的任务。不能让两者都工作。总是得到未定义的任务
  • 这是@foreach($posts as $post)

标签: laravel laravel-blade laravel-5.7


【解决方案1】:

看起来可能是语法问题,因为 compact 应该可以正常工作。在你的控制器中试试这个:

return view('dashboard', compact('posts', 'tasks'));

那么在你看来,确保使用变量而不是类名,正如 Karl Hill 所说,它在() 中使用,而不是{{}}

@foreach($posts as $post)
   {{$post->nameOrWhatever}}
@endforeach

@foreach($tasks as $task)
    {{$task->nameOrWhatever}}
@endforeach

【讨论】:

  • 我在那里更新了我的代码以反映现在的情况。我仍然收到错误消息,提示任务不存在。
  • 这没有意义。你的代码是正确的。如果错误来自控制器(来自紧凑,而不是循环),则可能是 $userId 有问题,或者 Task 类有问题。 for 循环不应该有这个问题,因为 $tasks 变量至少会存储一个空集合。尝试在 getDashboard() 中的 return 语句之前转储 $tasks。我怀疑在尝试获取集合时出现了问题,而不是您为问题编写的任何代码(看起来都不错)。不相关,但在 HTML 中的数据上,更改为 data-task-id
  • 好的。您认为这可能是任务模型的错误吗?我可以遵循一分钟,因为正如您所说,我根本找不到其他代码有任何问题。我得到了相同的代码,可以在不同的地方使用不同的路线工作。 /taskList 而不是 /dashboard。
  • 对不起 - 我不能说。这是一个不同的问题,您必须通过其他区域回溯/跟踪转储才能查看。我确实认为您现在所拥有的内容与您的要求是正确的。
  • 哈哈。很高兴你解决了。如果回答有帮助,请标记为正确。
猜你喜欢
  • 1970-01-01
  • 2021-01-04
  • 2019-03-17
  • 1970-01-01
  • 2022-11-30
  • 1970-01-01
  • 2019-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多