1

我有两个 Laravel 应用程序共享一个数据库和jobs表。下面的 crontab 条目负责运行queue:work命令:

# App2 - path to app 2 - App with Account model and accounts table
* * * * * uname cd /app2/ && php artisan schedule:run

# App1 - path to app 1 - App with User Model and users table
* * * * * uname cd /app1/ && php artisan schedule:run

这是我的问题,当 app1 中的用户尝试通过提交他的电子邮件来恢复他的密码时,账户表被查询而不是用户表在发送给用户的电子邮件中给我一个错误的名称。可能是什么问题?

我的队列驱动程序是数据库,这是电子邮件代码:

public function emailResetLink(CanResetPasswordContract $user, 
                               string $token, Closure $callback = null)
{
    $view = $this->emailView;

    return $this->mailer->queue(
        $view,
        compact('token', 'user'),
        function ($m) use ($user, $token, $callback) {
            $m->to($user->getEmailForPasswordReset());

            if (! is_null($callback)) {
                call_user_func($callback, $m, $user, $token);
            }
        }
    );
}

这是在电子邮件视图中:

Dear {{ $user->name }},<br/><br/> <!-- I get the wrong name --> 
{{ trans('passwords.password_email_text_one') }}
4

1 回答 1

2

在 内部建立一些连接config/queue.php,在每个连接上设置不同的表名:

<?php
return [
    'connections' => [
        'accountConnection' => [
            'driver' => 'database',
            'table' => 'accounts',
            'queue' => 'accountqueue',
            'expire' => 60,
        ],
        'userConnection' => [
            'driver' => 'database',
            'table' => 'users',
            'queue' => 'userqueue',
            'expire' => 60,
        ],
    ],
];

然后在添加作业时指定单独的连接,

Queue::connection("accountConnection")->push($job);
// or
$job->dispatch()->onConnection("accountConnection");

之后,使用

php artisan queue:work accountConnection

运行特定队列连接

于 2016-07-19T10:34:38.630 回答