var dump 在 laravel 中返回一个空数组


var dump returns an empty array in laravel

在以下代码后运行var_dump($posts_id)成功获取数据:

$posts_pins = DB::table('pins')
        ->join('posts', 'posts.id', '=', 'pins.post_id')
        ->where('pins.post_id', '=', $posts_id)
        ->get();
            var_dump($posts_id);
            exit();

输出:

object(Illuminate'Support'Collection)[199]
  protected 'items' => 
    array (size=24)
      0 => int 62
      1 => int 63
      2 => int 64
      3 => int 65
      4 => int 66

var_dump($posts_pins)带回一个空数组时...有什么想法吗?

根据您的var_dump($posts_id),我会说您需要一个whereIn子句,可能还需要一个toArray()

$posts_pins = DB::table('pins')
            ->join('posts', 'posts.id', '=', 'pins.post_id')
            ->whereIn('pins.post_id', $posts_id->toArray())
            ->get();

toArray()可能不是必需的,我不确定whereIn是否会自动转换它。

原因是您使用的是 post ID 数组,而 where() 方法只接受单个值进行比较,而 whereIn() 接受多个值。