如何缩短查询数据库到没有关系小部件10月CMS的下拉选项

时间:2017-12-29 05:24:09

标签: laravel octobercms

我已经在10月份的CMS项目中完成了这项工作

public function getJenisKebOptions(){

    $kebum = Db::table('mismaiti_settingwarta_jeniskeb')->select('jeniskeb')->where('katkeb','Umum/Raya')->get(); 

    $kebums = json_decode(json_encode($kebum),true) ;

    $ibum = array_values($kebums[0]);  
    $ibum1 = array_values($kebums[1]);
    $ibum2 = array_values($kebums[2]);    


    return ['jeniskeb' => $ibum,$ibum1,$ibum2 ];

}

我需要缩短它,所以当有更多三个数组时,我不必编写长行代码。

edited(solved)

public function getJenisKebOptions(){

    $kebum = Db::table('mismaiti_settingwarta_jeniskeb')->where('katkeb','Umum/Raya')->pluck('jeniskeb','jeniskeb');         

    return $kebum;

}

1 个答案:

答案 0 :(得分:0)

我对你的代码感到困惑

  

返回[' jeniskeb' => $ ibum,$ ibum1,$ ibum2];

您需要返回什么输出。 getJenisKebOptions,您需要返回jenis_keb的选项,并且必须采用key => value格式,因此我建议用户最后一招只需2行代码即可返回options

一般用途,您可以使用以下代码:

您可以替换代码

$kebums = json_decode(json_encode($kebum),true) ;

$ibum = array_values($kebums[0]);  
$ibum1 = array_values($kebums[1]);
$ibum2 = array_values($kebums[2]);

return ['jeniskeb' => $ibum,$ibum1,$ibum2 ];
  

使用

$kebums = json_decode(json_encode($kebum),true);

$returnArray = [];
foreach ($kebums as $values) {
    $returnArray[] = $values;
}

return ['jeniskeb' => $returnArray];
  

如果您想要更专业的方式,可以使用内置函数pluck

public function getJenisKebOptions(){

    // MismaitiSettingwartaJeniskeb <= your model
    $items = MismaitiSettingwartaJeniskeb::where('katkeb', 'Umum/Raya')
                                      ->pluck('jeniskeb', 'id');
    return $items;
}