我来自codeigniter背景。与codeigniter helper目录不同,我只是在Laravel的app目录中创建了helper目录。只想知道如何在这个常用功能中执行查询。这是我的codeigniter功能。
function show_menu($primary_key_col, $parent_id, $sort_order)
{
$output = "";
$ci =& get_instance();
$ci->db->select("*");
$ci->db->where('is_active', "Y");
$ci->db->where('is_delete', "N");
$ci->db->where('parent_id', $parent_id);
($sort_order!="")?$ci->db->order_by($sort_order, "ASC"):"";
$query = $ci->db->get('tbl_cms_menus');
foreach ($query->result() as $row){
$output .= '<option value="'.$row->$primary_key_col.'">'.$indent.$row->menu_name.'</option>';
}
return $output;
}
我在laravel文件中尝试过类似的东西。但是这段代码没有给我任何结果。请告诉我这段代码我在哪里做错了。感谢
function databaseTable()
{
$table = DB::table('tbl_cms_menus');
$get_rows = $table->get();
$count_rows = $table->count();
if($count_rows > 0){
foreach ($get_rows as $tbl)
{
echo $tbl->menu_name;
}
}
}
答案 0 :(得分:0)
这段代码腐烂得太厉害,以至于它已经腐烂了。
但是,如果你只是想把它变成应用程序就像那样干......然后在你的基本控制器类中添加这样的东西......
$whatever = crazyChainingStuff;
foreach ($whatever ...) { $topMenu .= ... }
View::share('topMenu', $topMenu);
如果您想学习如何编写对您的公司和客户造成的损害较小的代码,那么我建议您首先观看Bob叔叔&#34;基础知识&#34;视频。至少前5-6。 http://cleancoders.com
答案 1 :(得分:0)
看起来您正在尝试使用数据库中的某些数据生成drop-down/select
,在这种情况下,您应该将drop-down/select
所需的数据从控制器传递到您拥有的视图例如,在您的视图中写下您的HTML
,您可能会select
这样:
echo Form::select('cms_menu', $cms_menu, Input::old('cms_menu'));
或者这个(如果你使用的是Blade
):
{{ Form::select('cms_menu', $cms_menu, Input::old('cms_menu')) }}
从你的controller
开始,你应该传递$cms_menu
应该包含menu-items
作为arrtay并填充该数组,你可以尝试这样的事情:
$menuItems = DB::table('tbl_cms_menus')->lists('menu_name','id');
return View::make('your_view_name', array('cms_menu' => $menuItems));
此外,您可以使用以下内容:
// Assumed you have a Page model
$menuItems = Page::lists('menu_name', 'id');
return View::make('your_view_name', array('cms_menu' => $menuItems));
您还可以阅读this article,这是关于使用view composer
(更多Laravelish方式)从数据库构建菜单。详细了解documentation上的Form::select
。
答案 2 :(得分:0)
给出答案为时已晚。我也是来自CodeIgniter的,当我学习Laravel时,我首先尝试找到如何在Helper中编写查询。我的团队负责人帮助了我。
我已经在辅助函数中转换了您的代码。
function show_menu($primary_key_col, $parent_id, $sort_order)
{
$query = DB::table('tbl_cms_menus')
->select('*')
->where('is_active', '=', 'Y')
->where('is_delete', '=', 'N')
->where('parent_id', '=', $parent_id);
($sort_order != "")? $query->orderBy($sort_order, "ASC") : "";
$resultData = $query->get()->toArray();
}
此处$resultData
将为数组格式。现在,您可以根据需要创建一个foreach
循环。