在Laravel 4中返回随机行

时间:2013-07-11 02:51:32

标签: mysql laravel laravel-4

我有一张推荐表,我想在我的Laravel 4项目的主页上显示。通常我会运行一个查询来获取随机行:

SELECT * FROM `testimonials` WHERE `id`=".mt_rand(1,3);

但是我在尝试运行它时遇到了这个错误:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '".mt_rand(1,3)' at line 1 (SQL: SELECT * FROM `testimonials` WHERE `id`=".mt_rand(1,3);) (Bindings: array ( 0 => 1, )) 

这是我的控制器:

        public function showHome()
{
            DB::select('SELECT * FROM `testimonials` WHERE `id`=".mt_rand(1,3);', array(1));
    return View::make('home.index', array('pageTitle' => 'Home'));
}

另一个问题是如何在home.blade.php模板中显示此信息?

我通常会做一个while循环并执行类似$ row ['assoc_array']

的操作

2 个答案:

答案 0 :(得分:1)

$testimonial = DB::table('testimonials')->where('id', mt_rand(1, 3))->first();
return View::make('home.index', array('pageTitle' => 'Home', 'testimonial' => $testimonial));

这应该提供一个名为“推荐”的变量,您可以在视图中使用。

答案 1 :(得分:0)

public function showHome()
{
    DB::select('SELECT * FROM `testimonials` WHERE `id`=' . mt_rand(1, 3));
    return View::make('home.index', array('pageTitle' => 'Home'));
}