我正在使用 Laravel 查询和带有简单查询的数组从数据库中获取整个对象(见下图)public function editgamemenu($id){ $game = Game::find($id); $genres = Genre::all(); $selectedgenres = DB::table('game_genre')->select('genre_id')->where('game_id','=',$id)->get()->toArray(); returnview('editgametext')>with(compact('game','genres','selectedgenres'));}之后,我使用 foreach 遍历对象以尝试查看对象的 id 是否在我之前提取的数组中,但它给了您以下错误:“类 stdClass 的对象无法转换为 int”查看代码:<input type="hidden" value="{{$game->id}}" id="id" name="id"><div class="form-group col-4"> <p><strong>Genres:</strong></p> <div class="container"> @foreach($genres as $genre) <span class="genre-list"> <label>{{$genre->name}}</label> @if(in_array($genre,$selectedgenres)) <input type="checkbox" name="genres[]" value="{{$genre->id}}" checked> @else <input type="checkbox" name="genres[]" value="{{$genre->id}}"> @endif </span> @endforeach我已经尝试将 $genre->id 转换为 int ,但它不起作用,还有更多的东西。帮助将不胜感激。谢谢
3 回答
慕桂英4014372
TA贡献1871条经验 获得超13个赞
改变
$selectedgenres = DB::table('game_genre')
->select('genre_id')
->where('game_id','=',$id)
->get()
->toArray();
对此
$selectedgenres = DB::table('game_genre')
->select('genre_id')
->where('game_id','=',$id)
->get()
->pluck('genre_id')
->toArray();
注意 ->pluck('genre_id')
如果没有 pluck,您将拥有一个对象数组。
编辑:正如@quickSwap 注意到的,在您的刀片文件中,您还需要更改$genre为$genre->id
@if(in_array($genre->id, $selectedgenres))
....
@endif
编辑2:您还可以利用 Collection
$selectedgenres = DB::table('game_genre')
->where('game_id','=',$id)
->pluck('genre_id'); // returns a collection
在你的刀片中
@if($selectedgenres->contains($genre->id))
- 3 回答
- 0 关注
- 365 浏览
添加回答
举报
0/150
提交
取消