簡體   English   中英

在沒有Laravel的情況下使用Eloquent - 無法使用DB ::

[英]Using Eloquent without Laravel - Unable to use DB::

我試圖在Laravel應用程序和將作為cron作業運行的腳本之間共享Eloquent模型。

use Illuminate\Database\Capsule\Manager as Capsule;

$Capsule = new Capsule;
$Capsule->addConnection(...);
$Capsule->setAsGlobal();
$Capsule->bootEloquent();

// Application logic below...

使用上面的代碼,我可以使用模型,只要它們不引用DB:: 例如,給定此類:

namespace MyApp\Modules\Locations\Models;

use DB;
use MyApp\Models\Organisation as BaseOrganisation;

class Organisation extends BaseOrganisation
{
    /**
     * The sites associated with this organisation.
     *
     * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
     */
    public function sites() {
        return $this->belongsToMany(Site::class,
            DB::connection('default')->getDatabaseName() . '.global_lu_sites_organisation',
            'organisation_id',
            'site_id'
        );
    }
}

此模型在Laravel中有效,但從腳本調用sites()導致此錯誤:

致命錯誤:未捕獲錯誤:在第14行的/ app / Modules / Locations / Models / Organisation.php中找不到類'DB'

如果我use DB; 在模型中use Illuminate\\Database\\Capsule\\Manager as DB; ,然后它在腳本級別工作,但不在Laravel中。

如何在Laravel和腳本中使用DB::

替換use DB; use Illuminate\\Support\\Facades\\DB;

根據KFoobar的評論,在全局命名空間中添加class DB extends Illuminate\\Database\\Capsule\\Manager {}修復了問題。 我認為這是有效的,因為Capsule Manager嚴重依賴於靜態類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM