无法将模型数据加载到create()函数中(错误:使用数组上的()调用成员函数)

时间:2019-05-01 00:48:48

标签: php laravel

尝试将表加载到我的create()函数中时出现此错误,以便用户可以在创建用户页面的Call to a member function with() on array

的team_names列表中进行选择

这是我的UserController.php

use Illuminate\Http\Request;
use App\Game;
use App\User;
use App\Team;

...

public function create()
  {
    $pagetitle = 'Create User';
    $teams = Team::orderBy('team_name', 'asc')->get();

    if(auth()->user()->user_type !== 'admin'){
      return redirect('/')->with('error', "You do not have access to the game you attempted to view.");
    }

    return view('pages.admin.users.create', compact('pagetitle')->with('teams', $teams));
  }

这是我的create.blade.php

  @if(count($teams) > 0)
    @foreach($teams as $team)
      <option value="{{$team->id}}">{{$team->team_name}}</option>
    @endforeach
  @else
    <p>No teams found...</p>
  @endif

在这种情况下,关系确实不重要,尽管我确实已正确设置了所有关系。

对于上下文:我正在创建“用户”,但正在加载所有“团队”名称。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

compact('pagetitle')->with('teams', $teams)是错误的。

compact('pagetitle')返回一个array。数组上没有名为with()的函数。

要返回包含pagetitleteams的数组,可以使用压缩。

compact('pagetitle', 'teams');

就是这样。

所以

return view('pages.admin.users.create', compact('pagetitle', 'teams'));

答案 1 :(得分:1)

您可以使用compact()或with()将对象传递给视图。

return view('pages.admin.users.create',compact('pagetitle','teams'));
OR
return view('pages.admin.users.create')->with('pagetitle',$pagetitle)->with( 'teams',$teams);