如何从Builder获得Laravel Collection?

时间:2015-12-15 08:34:59

标签: php mysql sql laravel laravel-5

我想从两个表akciifeeds获取所有结果,并在搜索后抛出它们(现在查询只返回所有记录而没有任何搜索条件),这里是查询(mysql):

DB::query('SELECT id, title, text FROM (
        SELECT id, title, text FROM `akcii` UNION ALL
        SELECT id, title, body FROM `feeds`
    ) temp_table
        ORDER BY `id` desc
        LIMIT 0, 10')

结果是我需要的,但在我无法转换它之后? 如果我拨打->get()方法,我会收到错误消息:

QueryException in Connection.php line 651:
SQLSTATE[HY000]: General error: 1096 No tables used (SQL: select *)

我做错了什么?

1 个答案:

答案 0 :(得分:2)

DB :: query()方法没有获取任何参数,因此您在那里传递的查询将被忽略。您在空构建器上调用 get(),而该构建器不知道在哪个表上运行查询。生成的查询只是 SELECT * ,因此是SQL错误。

如果您希望这样做,您应该调用 DB :: select()方法,例如:

$results = DB::select($your_query);

但是,你会得到的是数组,而不是 Collection 对象。如果您想从中制作一个集合,请执行以下操作:

$collection = new Collection($results);