无法在 Laravel 中复制 DATE_FORMAT 查询
Can't replicate a DATE_FORMAT query in Laravel
所以,我在项目的不同版本中写出了这个查询。
$result = $db->select("SELECT `nID`, `txNome`, `txEmail`
FROM `".$this->tablename."`
WHERE `at_state` != 'invalid'
AND `dtCreated` < :weekAgo
AND DATE_FORMAT(dtCreated, '%w') = DATE_FORMAT(NOW(), '%w')
AND `remarketing_amigos_sent` = '1'
AND `amigo` IS NULL
AND `txEmail` NOT IN (
SELECT `email`
FROM `utils`.`unsubscribe`
WHERE `email` = `".$this->tablename."`.`txEmail`
AND (`idCampaign` = :campaign OR `idCampaign` = '*')
);
", array(
'campaign' => CoreHelper::getCampaignID(),
'weekAgo' => $aWeekAgo
));
我正在尝试将其转换为 Laravel 的查询生成器,我可以转换整个内容,但 DATE_FORMAT 位除外...我不知道如何转换它进入 Eloquent。
应用程序应每周向一组人员发送一次电子邮件,这就是 DATE_FORMAT 存在的原因,以匹配工作日。
我如何将其转换为查询生成器?
我当前的代码如下所示
$this->lead->where('at_state', '!=', 'invalid')
->where('dtCreated', '<', $aWeekAgo)
->where(???)
->where('remarketing_amigos_sent', '1')
->whereNull('amigo')
->whereNotIn('txEmail', function($q) {
$q->select('email')->from('utils.unsubscribe')->where('idCampaign', CoreHelper::getCampaignID());
})->get();
请注意,$this->lead 部分有意不同,因为它指的是我的 Eloquent 模型,而原始版本是使用 DB Facade.
完成的
尝试:
->where(DB::raw("DATE_FORMAT(dtCreated, '%w') = DATE_FORMAT(NOW(), '%w')"))
https://laravel.com/docs/5.3/database#running-queries
希望对您有所帮助!
您可以使用 Laravel 的 whereRaw() 函数来完成一些复杂的查询:
->whereRaw("DATE_FORMAT(dtCreated, '%w') = DATE_FORMAT(NOW(), '%w')")
你可以使用这个条件,这里我展示了一个例子,我已经在我的项目中实现了。
$today = date( "Y-m-d H:i:s" );
$presentStudents = StudentAttendance::where('status_id', 1)
->where( 'DATE_FORMAT(attendance_date,\'%Y-%m-%d\'', $today )
所以,我在项目的不同版本中写出了这个查询。
$result = $db->select("SELECT `nID`, `txNome`, `txEmail`
FROM `".$this->tablename."`
WHERE `at_state` != 'invalid'
AND `dtCreated` < :weekAgo
AND DATE_FORMAT(dtCreated, '%w') = DATE_FORMAT(NOW(), '%w')
AND `remarketing_amigos_sent` = '1'
AND `amigo` IS NULL
AND `txEmail` NOT IN (
SELECT `email`
FROM `utils`.`unsubscribe`
WHERE `email` = `".$this->tablename."`.`txEmail`
AND (`idCampaign` = :campaign OR `idCampaign` = '*')
);
", array(
'campaign' => CoreHelper::getCampaignID(),
'weekAgo' => $aWeekAgo
));
我正在尝试将其转换为 Laravel 的查询生成器,我可以转换整个内容,但 DATE_FORMAT 位除外...我不知道如何转换它进入 Eloquent。
应用程序应每周向一组人员发送一次电子邮件,这就是 DATE_FORMAT 存在的原因,以匹配工作日。 我如何将其转换为查询生成器?
我当前的代码如下所示
$this->lead->where('at_state', '!=', 'invalid')
->where('dtCreated', '<', $aWeekAgo)
->where(???)
->where('remarketing_amigos_sent', '1')
->whereNull('amigo')
->whereNotIn('txEmail', function($q) {
$q->select('email')->from('utils.unsubscribe')->where('idCampaign', CoreHelper::getCampaignID());
})->get();
请注意,$this->lead 部分有意不同,因为它指的是我的 Eloquent 模型,而原始版本是使用 DB Facade.
完成的尝试:
->where(DB::raw("DATE_FORMAT(dtCreated, '%w') = DATE_FORMAT(NOW(), '%w')"))
https://laravel.com/docs/5.3/database#running-queries
希望对您有所帮助!
您可以使用 Laravel 的 whereRaw() 函数来完成一些复杂的查询:
->whereRaw("DATE_FORMAT(dtCreated, '%w') = DATE_FORMAT(NOW(), '%w')")
你可以使用这个条件,这里我展示了一个例子,我已经在我的项目中实现了。
$today = date( "Y-m-d H:i:s" );
$presentStudents = StudentAttendance::where('status_id', 1)
->where( 'DATE_FORMAT(attendance_date,\'%Y-%m-%d\'', $today )