Laravel : 选择记录时比较两个 table 之间的日期时间

Laravel : Comparing datetime between two table while selecting record

我有 Laravel 应用程序,我在其中检查线程评论 (thread_comment table) 创建日期时间和线程 (线程 table) 上次访问日期。

我会select如果任何线程评论创建日期时间 > 线程上次访问日期,我将查询它们。 这样做的目的是通知用户自上次访问他们的线程以来有多少新评论。

下面是我的代码。

$new_thread_comment_count = DB::table('ap_thread')
            ->join('ap_thread_comment', 'ap_thread_comment.ThreadID', '=', 'ap_thread.ThreadID')
            ->where('ap_thread.CreatedBy', Auth::user()->UserID)
            ->where('ap_thread_comment.CreatedDateTime','>','ap_thread.last_visit_date')
            ->count();

我的问题是,这不起作用。如果我将操作数更改为 <,它​​会显示所有记录,这是不正确的。 在比较两个 table 之间的日期时间时,我是否需要在 where 子句中进行任何日期时间转换?

CREATE TABLE `ap_thread`
(`ThreadID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`ThreadTitle` text NOT NULL,
`Remark` text NOT NULL,
`CountryID` smallint(6) NOT NULL,
`last_visit_date` datetime NOT NULL,
`Thread_StatusID` tinyint(4) NOT NULL,
`StatusID` tinyint(4) NOT NULL,
`CreatedBy` bigint(20) NOT NULL,
`CreatedDateTime` datetime NOT NULL,
`EditedBy` bigint(20) NOT NULL,
`EditedDateTime` datetime NOT NULL,
`IsSelling` tinyint(1) NOT NULL,
PRIMARY KEY (`ThreadID`)) 

CREATE TABLE `ap_thread_comment` (
`Thread_CommentID` bigint(20) NOT NULL AUTO_INCREMENT,
`ThreadID` bigint(20) NOT NULL,
`StatusID` tinyint(4) NOT NULL,
`reply_to` bigint(20) unsigned NOT NULL,
`CreatedBy` bigint(20) NOT NULL,
`CreatedDateTime` datetime NOT NULL,
`Comment` text NOT NULL,
PRIMARY KEY (`Thread_CommentID`))

抱歉造成混淆。线程table 存储了用户创建的所有线程。而 thread_comment 存储其他用户评论的评论。 我想要做的是 select 通过比较 ap_thread_comment CreatedDateTime is > ap_thread last_visit_date 由登录用户创建的每个线程的总新评论。

使用

解决
$new_thread_comment_count = DB::table('ap_thread')
            ->join('ap_thread_comment', 'ap_thread_comment.thread_id', '=', 'ap_thread.thread_id')
            ->whereRaw('ap_thread_comment.created_at > ap_thread.last_visit_date')
            ->where('ap_thread.created_by','=',Auth::user()->user_id)
            ->Count();