2017-03-29 46 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