小编ale*_*ell的帖子

Laravel命令和工作

我想知道Laravel 5.1中不同的类命令类之间有什么区别.据我所知,Laravel 5.1提供以下服务:

  • 控制台命令(artisan make:console)
  • 命令(artisan make:command)
    • 处理程序(artisan make::command --handler)
  • 工作(artisan make:job)

我直接从4.2到5.1,所以我不知道4.2和5.1之间发生了什么,但我被告知中间的(只是命令)基本上不应该再被使用 - 它们来自当队列化的工作在5.0中成为"命令"时,Laravel自从决定反对这一点,而他们只是为了兼容性.但是,我不是100%在这一点,所以澄清将不胜感激.

我的具体用例是我想要一个地方放置一个独立的"可运行"任务.例如,某些东西将从给定目录中删除超过5天的文件(但它可以执行任何操作).

起初这听起来像一个控制台命令 - 我希望能够从artisan一开始就运行它.但我可能也希望它按计划进行(很棒,artisan schedule:run运行控制台命令).但我可能也想从代码中异步执行它.控制台命令可以运行同步Artisan::call(),但对于异步的,这是(我认为)这里排队进来,突然有是一个工作.

好的,我们有一份工作.我们现在可以从代码中将它添加到队列中,但是我们如何将它作为工匠命令(同步)执行?我可以创建一个瘦控制台命令并DispatchesJobs在其中添加特征(或其中的代码),然后分派作业吗?作业是否总是必须排队,或者我们是否可以同步执行作业(理想情况下,输出到控制台命令的输出?)同样的问题是按计划运行它 - 我应该创建这个控制台命令并将其添加到调度程序,还是可以让调度程序直接运行该作业?

最后,我们的'命令'不是控制台命令,也不是工作.正如我之前所说的那样,人们告诉我这些只是来自Laravel 5.0的代码更改(有点)还原.但是artisan make命令对他们来说仍然存在,所以他们不可能那么死.另外,处理自我处理命令(默认情况下,handle方法附带)和"需要"处理程序类(运行artisan make:command --handler)的处理是什么?你如何实际执行这些?手动使用(new App\Command\SomeCommand)->handle();or (new App\handlers\SomeCommandHandler)->handle(new App\Command\SomeCommand),或者是否有一些我不知道的隐藏系统(也许可以使用作业/队列调度程序调度它们)?你也可以创建'排队'命令artisan make::command --queued,那么这些命令有何不同呢?

我想我的问题归结为以下几点:

  • 它们之间真正的(语义功能)区别是什么?
  • "运行"它们的正确方法是什么?
  • 哪种方式最适合我需要运行的通常独立的代码,无论我认为合适的方式是什么?

我在文档中找到了有关如何使用队列和创建控制台命令的信息,但没有关于何时使用它们或在命令类和处理程序上的任何内容的确切信息.


相关但不完全相同(也没有答案):Laravel 5.1命令和作业

jobs laravel laravel-5 laravel-5.1

30
推荐指数
2
解决办法
2万
查看次数

使Laravel在插入/更新时使用MySQL默认值

我注意到,在Laravel中,(当使用时$model->fill(Input::all()),并不重要的是数据是如何进入的),空字段(表单中为空'')以空字符串()形式出现.这是有道理的,因为它是从浏览器传递到HTTP服务器到PHP的方式.

问题是,如果列是数字并且具有DEFAULT值,或者NULL能够,则Eloquent生成的查询具有''列的值,因此MySQL将其解释并输入值0而不是默认列值或NULL.这是我在这里做错了什么,还是我需要额外的工作(例如一个mutator)来检测这个空字符串并转换null为实现我真正想要的东西?

当然我理解从技术角度来看,Laravel在不知道列如何工作的情况下,不能只假设空字符串意味着传递NULLINSERT查询,因为有时你实际上想要设置一个字段(特别是基于字符的字段)一)空字符串而不是NULL.

也就是说,我宁愿不必为我所有的模型定义变换器只是因为我正在使用$model->fill(),但有什么我不知道我能做什么吗?


对于阅读此内容的MySQL人员 - 0如果传递了数字字段,是否正确''?似乎应该被看作是NULL因为它没有明确0的,但我想这也许弱类型等同''0而不是更远NULL.

mysql laravel eloquent laravel-4

5
推荐指数
1
解决办法
2402
查看次数

SVN锁定了netbeans

我一直低于每当我试图像这样得到的消息commit,update或什么的.

svn: E155004: Working copy 'C:\Users\Mateusz\Documents\NetBeansProjects\futurenet\trunk\newproject' locked
svn: E155004: 'C:\Users\Mateusz\Documents\NetBeansProjects' is already locked.
Run Code Online (Sandbox Code Playgroud)

我也试着cleanup像其他主题一样建议,但仍然是相同的信息.有人可以帮帮我吗?

svn netbeans

3
推荐指数
1
解决办法
7268
查看次数

标签 统计

laravel ×2

eloquent ×1

jobs ×1

laravel-4 ×1

laravel-5 ×1

laravel-5.1 ×1

mysql ×1

netbeans ×1

svn ×1