为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 Laravel 请求的对象从查询转换为 int

如何将 Laravel 请求的对象从查询转换为 int

PHP
不负相思意 2021-06-30 18:57:37
我正在使用 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))


查看完整回答
反对 回复 2021-07-09
  • 3 回答
  • 0 关注
  • 365 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信