我正在尝试如何在Laravel上写作业.
在Laravel文档之后,我创建了一个使用mail:queue发送电子邮件的简单作业.
我还添加了一个cron作业,它将每分钟调用一次调度程序,然后每5分钟运行一次该作业.
当我手动运行命令队列时,一切正常:listen.
后来我在调度程序中添加了一个print语句,我发现了一个奇怪的问题.
每当我运行队列时:从终端监听,我看到日程安排功能内的打印消息,每5秒打印一次.
所以我的问题是队列:听调用日程功能?如果是,为什么我们需要添加计划:作为一个cron工作运行?
我使用的代码:
protected function schedule(Schedule $schedule){
error_log("inside scheduler");
$schedule->call(function () {
dispatch(new \App\Jobs\SendEmail);
})->everyFiveMinutes();
}
Run Code Online (Sandbox Code Playgroud)
这是我在终端上运行的命令.
php artisan queue:listen
Run Code Online (Sandbox Code Playgroud)
我
在调度
程序
内部调度程序
内的调度程序
内得到的输出(每5秒)
...
有人能解释一下这里发生了什么吗?
- 添加作业代码以更好地理解
SendEmail.php
public function handle() {
//do some task here
Mail::queue("emails.send_update", [], function($message) {
$message->to("someone@somedomain.com");
$message->subject('Status has been updated');
});
}
Run Code Online (Sandbox Code Playgroud) 我在我的Laravel项目中包含了Yajra Datatables并且工作正常.
问题是我需要合并3个列值并将它们显示为1并允许同时搜索.
我怎么做?
我能够使用渲染功能并在单个列中显示数据.但那么如何搜索?
示例Mysql表:
student_master(fname,mname,lname)
Run Code Online (Sandbox Code Playgroud)
在javascript我有:
columns: [
{data: 'thiscanbeanything', render:function ( data, type, row ) {
return row.fname+row.mname+row.lname;
}},
]
Run Code Online (Sandbox Code Playgroud)
我在控制器上的Ajax功能如下所示
$results = DB::table("student_master")
->select(['fname', 'mname', 'lname']);
return Datatables::of($results)
->make(true);
Run Code Online (Sandbox Code Playgroud)