Laravel 5.8-从采摘结果中获取价值

时间:2019-06-11 15:09:55

标签: laravel laravel-5 foreach laravel-5.8 pluck

我需要帮助才能使此代码正常工作。在通过软件进行搜索之后,我的控制器会返回安装了该软件的本地用户以及S.O。谁都一样。 例如,此查询将返回“ 1 2”,因为这两个图像具有“ Google Chrome”。

    $img_id = Software::where('application', $request->input('application'))->pluck('imagem_id');

然后,我需要列出所有具有该图像的本地人,这是软件搜索后的结果。

    $ambientes = Ambiente::where('imagem_id', $img_id)->get();

但是她只向我显示imagem_id = 1的本地人,即使我在视图中使用了foreach:

    @foreach ($ambientes as $value)
    <tr>
       <td>{{ $value->unidade->name }}</td>
       <td>{{ $value->bloco->name }}</td>
       <td>{{ $value->name }}</td>
       <td>{{ $value->imagem_id }}</td>
    </tr>
    @endforeach

我需要做些什么来显示具有image_id = 1和2的每个本地人?

Tks

2 个答案:

答案 0 :(得分:4)

正如您所说的

$img_id = Software::where('application', $request->input('application'))->pluck('imagem_id');

应返回两个id的数组,如下所示:

[1, 2]

如果这是答复,那么您可以使用whereIn

$ambientes = Ambiente::whereIn('imagem_id', $img_id)->get();

这将为您提供两种环境的集合,并且视图保持不变。

答案 1 :(得分:2)

当您尝试获取与多个ID匹配的记录时,不能使用where(),而需要使用whereIn()

 $img_id = Software::where('application', $request->input('application'))->pluck('imagem_id');
 // This should return an array/Collection of `imagem_id` values.

 $ambientes = Ambiente::whereIn('imagem_id', $img_id)->get();

现在,$ambientes应该包含与您的初始查询返回的所有Ambiente值匹配的imagem_id条记录。