Как сделать запрос с помощью Laravel Jobs? - PullRequest
1 голос
/ 20 июня 2019

Я хочу запустить Laravel Job. Я использую supervisord на Centos 7 (с php 7.3). И я хочу сделать запрос в Laravel Job Class. Но когда я пытаюсь сделать это, это дает ошибку ниже. Интересно, где я делаю это неправильно? Моя ошибка:

BadMethodCallException: Call to undefined method Illuminate\Database\Eloquent\Builder::all() in /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php:50
Stack trace:
#0 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php(36): Illuminate\Database\Eloquent\Builder::throwBadMethodCallException('all')
#1 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(1356): Illuminate\Database\Eloquent\Builder->forwardCallTo(Object(Illuminate\Database\Query\Builder), 'all', Array)
#2 /home/merryedu/web/app/Jobs/VideoLinkCheckerJob.php(35): Illuminate\Database\Eloquent\Builder->__call('all', Array)
#3 [internal function]: App\Jobs\VideoLinkCheckerJob->handle()
#4 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(32): call_user_func_array(Array, Array)
#5 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(90): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#6 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(34): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#7 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Container/Container.php(576): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#8 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(94): Illuminate\Container\Container->call(Array)
#9 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}(Object(App\Jobs\VideoLinkCheckerJob))
#10 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(App\Jobs\VideoLinkCheckerJob))
#11 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(98): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#12 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(49): Illuminate\Bus\Dispatcher->dispatchNow(Object(App\Jobs\VideoLinkCheckerJob), false)
#13 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(88): Illuminate\Queue\CallQueuedHandler->call(Object(Illuminate\Queue\Jobs\DatabaseJob), Array)
#14 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(327): Illuminate\Queue\Jobs\Job->fire()
#15 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(277): Illuminate\Queue\Worker->process('database', Object(Illuminate\Queue\Jobs\DatabaseJob), Object(Illuminate\Queue\WorkerOptions))
#16 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(118): Illuminate\Queue\Worker->runJob(Object(Illuminate\Queue\Jobs\DatabaseJob), 'database', Object(Illuminate\Queue\WorkerOptions))
#17 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(102): Illuminate\Queue\Worker->daemon('database', 'default', Object(Illuminate\Queue\WorkerOptions))
#18 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(86): Illuminate\Queue\Console\WorkCommand->runWorker('database', 'default')
#19 [internal function]: Illuminate\Queue\Console\WorkCommand->handle()
#20 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(32): call_user_func_array(Array, Array)
#21 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(90): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#22 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(34): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#23 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Container/Container.php(576): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#24 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Console/Command.php(183): Illuminate\Container\Container->call(Array)
#25 /home/merryedu/web/vendor/symfony/console/Command/Command.php(255): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#26 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Console/Command.php(170): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#27 /home/merryedu/web/vendor/symfony/console/Application.php(921): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#28 /home/merryedu/web/vendor/symfony/console/Application.php(273): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Queue\Console\WorkCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#29 /home/merryedu/web/vendor/symfony/console/Application.php(149): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#30 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Console/Application.php(90): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#31 /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(133): Illuminate\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#32 /home/merryedu/web/artisan(37): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#33 {main}

Моя система под; Ларавел 5.8, PHP 7.3, Очередь в базе данных, Супервизор установлен, Centos 7 последняя версия

"VideoLinkCheckerJob.php"
<?php

namespace App\Jobs;

use App\Http\Controllers\System\ConfigValue;
use App\Http\Controllers\System\VideoLinkCheckerController;
use App\Articles;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Support\Facades\Log;

class VideoLinkCheckerJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct()
    {
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        Log::info("Video eğitim link kontrolcüsü başlatıldı!");
        $articles = Articles::all();
        foreach ($articles as $article) {
            if($article->bot->lesson=='math') {
                $status = VideoLinkCheckerController::videoLinkStatus(ConfigValue::get('a_video_host').$article->bot_video_id.".mp4");
                Log::info($article->bot->code.' içindeki '.$article->google_video_id.' kodlu eğitimin durumu '.$status);
                $article->video_link_status = $status;
                $article->save();
            } elseif ($article->lesson->code=='physics') {
                $status = VideoLinkCheckerController::videoLinkStatus(ConfigValue::get('b_video_host').$article->bot_video_id.".mp4");
                Log::info($article->bot->code.' içindeki '.$article->google_video_id.' kodlu eğitimin durumu '.$status);
                $article->video_link_status = $status;
                $article->save();
            }
        }
        Log::info("Video eğitim link kontrolcüsü tamamlandı!");
    }
}

И "AdminArticleController.php"

namespace App\Http\Controllers;

use App\Bot;
use App\Category;
use App\Http\Controllers\System\ConfigValue;
use App\Http\Controllers\System\VideoLinkCheckerController;
use App\Jobs\VideoLinkCheckerJob;
use App\Articles;
use App\Tag;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Artisan;

class AdminArticleController extends Controller
{
    public function __construct()
    {
        $this->middleware('admin');
    }

    public function videoLinkChecker()
    {
        VideoLinkCheckerJob::dispatch();
        return back()->with('success', 'İşlem başlatıldı tamamlandığında raporu Eğitimler sayfasında görüntüleyebilirsiniz!');
    }
}

BadMethodCallException: вызов неопределенного метода Осветить \ База данных \ Eloquent \ Builder :: all () в /home/merryedu/web/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php:50

Ответы [ 2 ]

0 голосов
/ 20 июня 2019
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
    protected $table = 'articles';

    protected $fillable = [
        'bot_id', 'bot_video_id', 'category_id', 'url', 'title', 'description', 'duration', 'lesson', 'views', 'like', 'dislike', 'status', 'video_link_status',
    ];

    public function category()
    {
        return $this->belongsTo('App\Category');
    }

    public function tag()
    {
        return $this->hasMany('App\ArticleTag');
    }

    public function bot()
    {
        return $this->belongsTo('App\Bot');
    }
}
0 голосов
/ 20 июня 2019

Вы отправляете работу неправильно. Попробуйте вот так

   public function videoLinkChecker()
    {
        dispatch(new VideoLinkCheckerJob());
        return back()->with('success', 'İşlem başlatıldı tamamlandığında raporu Eğitimler sayfasında görüntüleyebilirsiniz!');
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...