如何更改laravel 5集合中的值

时间:2016-06-05 07:40:26

标签: php laravel collections laravel-5

我在这里遇到了一些问题。 我得到了一个像:

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

在集合中,我有一个名为“类型”的列,数据看起来像'A1,A2,A3,'   要么 'A1,A3,' 我想将这些代码转移到真实姓名中 另一个表' vender_type '。

code name
 A1    XX
 A2    OO
 A3    ZZ

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

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您必须拆分type属性(使用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;
     }
}

我希望这会对你有帮助。

答案 1 :(得分:0)

我认为您需要更好的查询,而不是修改后的每个值。此vender_type可能是您数据库中的某个外键,因此您可以在查询构建器中获取该值。要了解laravel雄辩的外键和连接,请查看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替换为数据库中您的表名的值即可。

希望有所帮助