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

我正在使用 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 ,但它不起作用,还有更多的东西。帮助将不胜感激。谢谢


不负相思意
浏览 366回答 3
3回答

慕桂英4014372

改变$selectedgenres = DB::table('game_genre')&nbsp; &nbsp; ->select('genre_id')&nbsp; &nbsp; ->where('game_id','=',$id)&nbsp; &nbsp; ->get()&nbsp; &nbsp; ->toArray();对此$selectedgenres = DB::table('game_genre')&nbsp; &nbsp; ->select('genre_id')&nbsp; &nbsp; ->where('game_id','=',$id)&nbsp; &nbsp; ->get()&nbsp; &nbsp; ->pluck('genre_id')&nbsp; &nbsp; ->toArray();注意 ->pluck('genre_id')如果没有 pluck,您将拥有一个对象数组。编辑:正如@quickSwap 注意到的,在您的刀片文件中,您还需要更改$genre为$genre->id@if(in_array($genre->id, $selectedgenres))&nbsp; &nbsp; ....@endif编辑2:您还可以利用 Collection$selectedgenres = DB::table('game_genre')&nbsp; &nbsp; ->where('game_id','=',$id)&nbsp; &nbsp; ->pluck('genre_id'); // returns a collection在你的刀片中@if($selectedgenres->contains($genre->id))
打开App,查看更多内容
随时随地看视频慕课网APP