[英]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.