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

问题描述 投票:0回答:1

我已经在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;

}
laravel octobercms
1个回答
0
投票

我对你的代码感到困惑

return ['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;
}
© www.soinside.com 2019 - 2024. All rights reserved.