好的经过几个小时的研究并仍在使用DB :: select我不得不问这个问题.因为我即将把我的电脑拉下来;).
我想得到用户的最后一个输入(基于时间戳).我可以使用原始sql执行此操作
SELECT c.*, p.*
FROM users c INNER JOIN
(
SELECT user_id,
MAX(created_at) MaxDate
FROM `catch-text`
GROUP BY user_id
) MaxDates ON c.id = MaxDates.user_id INNER JOIN
`catch-text` p ON MaxDates.user_id = p.user_id
AND MaxDates.MaxDate = p.created_at
Run Code Online (Sandbox Code Playgroud)
我从另一个帖子此查询这里的计算器.
我已尝试使用Laravel中的流畅查询构建器完成所有操作,但没有成功.
我知道手册说你可以这样做:
DB::table('users')
->join('contacts', function($join)
{
$join->on('users.id', '=', 'contacts.user_id')->orOn(...);
})
->get();
Run Code Online (Sandbox Code Playgroud)
但这没有多大帮助,因为我不知道如何在那里使用子查询?谁可以点亮我的一天?
我在宅基地虚拟机(流浪汉)中使用最新版本的laravel(5.1).
我将我的项目连接到本地mariaDB服务器,其中我有一些表和2个db-view.
由于我只在db-view表上做了一些select,所以我随机收到了这个错误:
一般错误:1615准备好的陈述需要重新准备
从今天起,我只在db视图上选择时才会出现此错误.如果我打开我的phpMyAdmin并进行相同的选择它会返回正确的结果.
我试图打开php artisan tinker并选择db-view的一条记录,但它返回相同的错误:
// Select one user from user table
>>> $user = new App\User
=> <App\User #000000006dc32a890000000129f667d2> {}
>>> $user = App\User::find(1);
=> <App\User #000000006dc32a9e0000000129f667d2> {
id: 1,
name: "Luca",
email: "luca@email.it",
customerId: 1,
created_at: "2015-08-06 04:17:57",
updated_at: "2015-08-11 12:39:01"
}
>>>
// Select one source from Source db-view
>>> $source = new App\Source
=> <App\Source #000000006dc32a820000000129f667d2> {}
>>> $source = App\Source::find(1);
Illuminate\Database\QueryException with message 'SQLSTATE[HY000]: General error: 1615 Prepared statement needs …Run Code Online (Sandbox Code Playgroud)