检查数组中是否存在值

时间:2014-05-26 12:12:47

标签: laravel

我有2个查询,我想检查一个查询的值是否存在于其他查询的数组中。我有"维护"其中包含" process_id"和"进程" (进程ID的数组)。我想检查进程中是否存在每个process_id。在我的控制器中:

$processes = DB::select('select id from processes');
$maintenance = DB::select('select process_id from maintenances where car_id ="' . $id . '" group by process_id');
        $result = array();
        foreach ($processes as $key => $value) {
            $result[] = $value->id;
        }

在我的Helper.php中

public static function array_value($value, $array) {
        $results = 0;
        $str = "$value";
        if (in_array($str, $array)) {
            $results += 5;
        } else {
            $results += 1;
        }
        return $results;
    }

在我看来

 @foreach ($maintenance as $m)                         
          <tr> @if (Helpers\Helper::array_value($m->process_id, $processes)== 5)
               <td>   {{ $m->process }} </td>
                @elseif (Helpers\Helper::array_value($m->process_id, $processes)== 1) 
                  <td>Missing</td>    
                   @endif
          </tr>                                                 
  @endforeach

它只显示第一个if中的值。当在数组流程中找不到process_id时,它不会显示Missing

1 个答案:

答案 0 :(得分:1)

如果您正在使用laravel,您是否考虑建立关系以简化此任务?

我认为流程和维护会有一对多的关系吗?

您可以设置多对多的关系:

您的流程模型中的

public function maintenance() {
    return $this->belongsTo('Maintenance')
}

(其中Maintenance是模型类的名称。函数名称可以是任何内容)

在您的维护模式中:

public function process() {
    return $this->hasMany('Process')
}

然后您修改的模型检索是:

$maintenance = Maintenance::find($id);

更新:     $ maintenance =维护::其中(&#39; car_id&#39;,&#39; =&#39;,$ id) - &gt; first();

$maintenance->load('process');

(you could chain these)

然后在你看来:

@if($maintenance->process()->first())

{{$maintenance->process()->name}} //or whatever positive output

@else

"NO process found" //or your negative output

@endif

这段关系为你付出了艰苦的努力 - 然后你也可以使用相关模式的属性,例如名称等,这可能更加用户友好。

first()方法检索第一个相关模型。如果这是空的(即未找到)则负面响应起作用。你也可以使用count(),这可能比使用更好:

@if($maintence->process()->count() > 0)

但一切都取决于你想做什么。

你也可以探索将返回一个集合的get()方法,如果你将你的关系扩展到很多很多很有用,例如每个维护可能有很多进程/

希望这有帮助