Laravel - 使用多个数据库执行单个查询

时间:2014-07-30 20:48:44

标签: laravel laravel-4 eloquent

我正在Laravel网站上编写档案函数,我无法弄清楚如何使用Laravel的查询构建器复制此查询。我的数据库是“存档”和“实时”。

INSERT INTO archive.daily_by_post 
SELECT post_date, user_id, post_id 
    FROM live.clicks 
    WHERE timestamp BETWEEN '2014-07-28 00:00:00' AND '2014-07-28 23:59:59' 
    GROUP BY user_id, post_id;

我应该使用其他方法吗?这甚至可能吗?

1 个答案:

答案 0 :(得分:0)

当然可以。

但是,您需要使用原始语句OR Connection::insert()Query\Builder混合构建查询,如下所示:

$from = '2014-07-30 00:00:00';
$till = '2014-07-30 23:59:59';

$select = DB::table('live.clicks')
        ->select('post_date', 'user_id', 'post_id')
        ->whereBetween('updated_at', [$from, $till]) // empty array will do
        ->groupBy('user_id', 'post_id');

$statement = 'INSERT INTO archive.daily_by_post (specify fields if necessary) '
    . $select->toSql(); 

DB::insert($statement, $select->getBindings());