我正在尝试使用查询生成器获取查询数据的date_diff,但是我无法传递'create_at'值来计算天差。有任何想法吗?谢谢。
{{1}}
数据库
{{1}}
答案 0 :(得分:2)
实际上是通过使用以下代码:
$trialusers=Staff::all('id','email','created_at','trial')->where('trial',1);
$ trialusers变量将是Staff模型的集合。因此,您无法访问$ trialusers ['created_at']之类的数组键。
您要么必须执行foreach循环,要么获取集合的第一个模型。此示例使用first()方法。
public function index()
{
$now = Carbon::now();
$trialusers = Staff::all('id','email','created_at','trial')->where('trial',1);
$trialuser = $trialusers->first();
if ($trialuser) {
return $now->diffInDays($trialuser->created_at);
}
// do whatever needs to be done when no trial user exists.
return null;
}
答案 1 :(得分:1)
我建议您更好地使用Carbon库:因此您的代码应如下所示:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Staff;
use Carbon\Carbon;
class StaffController extends Controller
{
public function index()
{
$currentdate = Carbon::create();
$trialusers=Staff::all('id','email','created_at','trial')->where('trial',1);
$date = $trialusers->created_at;
$datediff = $date->diffInDays($currentdate);
return $datediff;
}
}
答案 2 :(得分:0)
我已经解决了我的问题。首先,我使用 trial = 1 的条件循环数据。其次是验证 create_at 的日期,并与今天的日期进行N天的比较。最后,我做了一个条件,可以按N天(差异6天和差异7天)过滤数据,然后将其存储在数组中。我将使用这些 $ trialuser6 和 $ trialuser7 变量创建电子邮件通知功能。
谢谢,我真的很感谢所有的想法和建议。
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Mail;
use App\User;
class checkTrial extends Command
{
public function checkTrialUser()
{
$trialuser6 = [];
$trialuser7 = [];
foreach (User::all()->where('trial', 1) as $value) {
$differtrial = !$this->validateDate($value['created_at']) ? 0 : (int) date_diff(date_create($value['created_at']), date_create(date('Y-m-d')))->format('%a');
$differtrial == 6 ? array_push($trialuser6, $value) : ($differtrial == 7 ? array_push($trialuser7, $value) : null);
}
}
}
我的验证功能。
public function validateDate($date)
{
return (bool) strtotime($date);
}
答案 3 :(得分:0)
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Staff;
use Carbon\Carbon;
class StaffController extends Controller
{
public function index()
{
$currentdate = Carbon::create();
$trialusers=Staff::all('id','email','created_at','trial')->where('trial',1)->->first();
if($trialusers){
$date = $trialusers->created_at;
$datediff = $date->diffInDays($currentdate);
return $datediff;
}else{
return null;
}
}
}