如何从基于数组的mysql数据库中获取数据

时间:2017-03-07 13:41:59

标签: php mysql laravel

所以我有一个名为paint的表,其数据如下

id            name               allow_on
------------------------------------------
1             Avian           Wall|Roof|Wood
2             Avitex          Wall|Roof|Iron
3             Nippon          Floor|Iron
4             Some            Plastic|Cloth|other

如何基于allow_on列获取字段,例如“我想要可以在墙上使用的颜料”,到目前为止,我的代码看起来像这样

$paints = Paint::get();
foreach($paints as $paint)
{
     $exp = explode("|", $paint->allow_on);
     foreach($exp as $pnt)
     {
         if(in_array($request->paint_name,$pnt))
         {
            var_dump($pnt)
         }
     }
}

我正在使用Laravel 5.4但我无法使其工作,任何解决方案?提前谢谢。

2 个答案:

答案 0 :(得分:1)

使用in_array()

时,您会混淆使用针和草垛

haystack应该是一个数组,即示例中的$exp数组

$paints = Paint::get();
foreach($paints as $paint)
{
     $exp = explode("|", $paint->allow_on);

    if(in_array($request->paint_name,$exp)) {
            // yes paint_name is in the array
     }
}

答案 1 :(得分:1)

$want    = 'Wall';
$allowed = Paint::where('allow_on', 'like', '%'.$want.'%')->get();

foreach ($allowed as $allowedPaint) {
    echo $allowedPaint->name;
}

上面的内容将为您提供可在墙上使用的所有颜料。如果只需要检索绘图名称,可以使用:

$allowed = Paint::where('allow_on', 'like', '%'.$want.'%')->pluck('name');
var_dump($allowed);