Laravel在帮助文件中选择查询

时间:2014-03-31 12:01:25

标签: mysql codeigniter laravel

我来自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;
    }
}
}

3 个答案:

答案 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循环。