2017-03-29 48 views
0

对不起,我用laravel ORM有两个JSON数组,像这样:laravel ORM合并两个JSON数组

PHP

$personnels = Personnel::all(); 
$skills = Languagelv::all(); 
return view('bs_sidebar/recommend',[ 
      'personnels' => $personnels, 
      'skills' => $skills, 
]); 

模型

class Personnel extends Model 
{ 
    protected $table = 'personnels'; 

    protected $fillable = ['name', 'sex']; 
} 

class Personnels_skill extends Model 
{ 
    public $timestamps = false; 
    protected $table = 'personnels_skill'; 
    protected $fillable = ['skill_name','personnels_id']; 
} 

JSON结果

{personnels:[ 
    {"id" : 1,"name" : "bruce","sex" : 1}, 
    {"id" : 2,"name" : "peter","sex" : 0} 
    ] 
}; 
{skill:[ 
     {"id" : 1,"skill_name": 'php', "personnels_id" : 1}, 
     {"id" : 2,"skill_name": 'jsp',"personnels_id" : 1}, 
     {"id" : 3,"skill_name": 'asp',"personnels_id" : 2} 
     ] 
}; 

我想合并两个json数组

(人员ID =技能personnels_id)

技能阵列是进入人员数组

这样的结果:

{merge:[ 
     {"id":1,"name":"bruce","sex:1,"skill":[{"id": 1,"skill_name": 'php', "personnels_id" : 1},{"id": 2,"skill_name": 'jsp',"personnels_id" : 1}]}, 

     {"id":2,"name":"peter","sex":0,"skill":[{"id": 3,"skill_name": 'asp',"personnels_id" : 2} 
     ] 
}; 

我该怎么办,请大家帮帮我,谢谢。

+0

显示您的代码,然后我可以帮你 –

+0

@lakhvirkumar ok!谢谢〜!已经显示php – Bruce

回答

0

让我们试试这个 它会工作。

 foreach ($personnels as $key => $value) { 
     $skill_list = DB::table('skill')->where('personnels_id','=',$value->id)->get(); 
     $personnels[$key]->skill = $skill_list; 
        } 

return view('bs_sidebar/recommend',['personnels' => $personnels]); 
+0

谢谢重播,我试试这个,但是在$ personnels [$ key] - > skill = $ skill_list中出错[从空值创建默认对象]; – Bruce

+0

请问你能否纠正你的错误?我没有明白你的意思.. –

+0

对不起!好吧,我会尝试这个代码,但是得到错误信息[从空值创建默认对象]错误是在$ personnels [$ key] - > skill = $ skill_list; – Bruce

2

如果你有你的关系,你的模型正确配置,你应该能够做到以下几点:

$personnel = Personnel::with('skills')->get(); 
return view('bs_sidebar/recommend', compact('personnel')); 

编辑 鉴于你的模型,如果你添加下面的关系中,你会能够使用上面的Eloquent查询。

class Personnel extends Model 
{ 
    protected $table = 'personnels'; 

    protected $fillable = [ 
     'name', 
     'sex', 
    ]; 

    public function skills() 
    { 
     return $this->hasMany(Personnels_skill::class, 'personnel_id', 'id'); 
    } 
} 

class Personnels_skill extends Model 
{ 
    protected $table = 'personnels_skill'; 

    protected $fillable = [ 
     'personnel_id', 
     'skill_name', 
    ]; 

    public $timestamps = false; 

    public function personnel() 
    { 
     return $this->belongsTo(Personnel::class, 'id', 'personnel_id'); 
    } 
} 
+0

感谢您的回复!但我不知道,如何配置模型..我试试这个 – Bruce

+0

@Bruce - 用你的数据库模式和模型代码更新你的问题。 – fubar

+0

@Bruce - 你的数据库模式与你的外键是什么有关。碰巧,你已经将它们包含在你的模型'$ fillable'数组中,所以不管。 – fubar