【问题标题】:How to change the value in laravel 5 collection如何更改 laravel 5 集合中的值
【发布时间】:2016-06-05 07:40:26
【问题描述】:

我这里有一些问题。 我得到一个集合,喜欢:

$VenderData=Vender::where('active', '=', '1')->get();

在集合中,我有一个名为“type”的列,数据看起来像'A1,A2,A3,' 或者 'A1,A3,' 我想将这些代码从 另一个表“vender_type”。

code name
 A1    XX
 A2    OO
 A3    ZZ

然后在原始集合 $VenderData 中添加一个新列。

我该怎么做?

【问题讨论】:

    标签: php laravel collections laravel-5


    【解决方案1】:

    你必须拆分类型属性(使用array explode(string $delimiter , string $string)),并从vender_type表中获取每个属性的名称,试试这个:

    $VenderData = Vender::where('active', '=', '1')->get();
    foreach($VenderData as $vend)
    {
         $vend->new_type = array();
         $types = explode(",", $vend->type);
         foreach($types as $type)
         { 
             $t = vender_type::where('code', $type)->first();
             if($t)
                 $vend->name_type[] = $t->name;
                 // or for example : $vend->name_type[$type] = $t->name;
         }
    }
    

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

      我认为您需要更好的查询而不是之后修改每个值。 vender_type 可能是您数据库中的某个外键,因此您可以在查询生成器中获取该值。要了解 laravel eloquent 中的外键和连接,请查看 this

      基本上你需要这样的东西

      $users = DB::table('table1')
              ->join('table2', 'table1.vender_type', '=', 'table2.vender_type')
              ->select('table1.code', 'table1.name', 'table2.vender_type')
              ->where('table1.active', '=', '1')
              ->get();
      

      只需将table1table2 替换为数据库中表名的值即可。

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 2019-10-05
        • 1970-01-01
        • 1970-01-01
        • 2016-10-19
        • 1970-01-01
        • 2021-11-04
        • 1970-01-01
        • 2015-12-04
        • 2015-11-24
        相关资源
        最近更新 更多