我正在一個專案中處理別人的代碼,當我試圖運行php artisan migrate時,我遇到了一個錯誤!
class SeedAdminUser extends Migration
{
/**。
* 運行遷移。
*
* @return void
*/
public function up()
{
//span>種子管理員用戶。
$admin= User::create([
'name' => 'Admin',
'email' => '[email protected]'。
'password' => Hash::make('password') 。
'plan_id' => null,
]);
$admin->assignRole(['adminor', 'company'])。
$plan = Plan::find(1) 。
Subscription::create([
'user_id' => 1,
'plan_id' => $plan-> id,
'starts_at' => Carbon::now(),
'ends_at' => $plan->interval == 'monthly' ? Carbon::now()->addMonth() : Carbon::now()->addMonths(12) 。
]);
}
我得到一個錯誤,因為這一行 'plan_id' => $plan->id,
這里是錯誤資訊 -
ErrorException。
試圖獲取非'id'的屬性object。
at database/migrations/2021_06_04_055759_seed_admin_user.php:34
30|
31| $plan = Plan::find(1) 。
32| Subscription::create([
33| 'user_id' => 1,
> 34| 'plan_id' => $plan-> id,
35| 'starts_at' => Carbon::now(),
36| 'ends_at' => $plan->interval == 'monthly' ? Carbon::now()->addMonth() : Carbon::now()->addMonths(12) 。
37| ])。
38| }
1 database/migrations/2021_06_04_055759_seed_admin_user.php: 34
IlluminateFoundationBootstrapHandleExceptions::handleError("Trying to get property 'id' of non-object"/span>, "/Applications/MAMP/htdocs/iSurvey/database/migrations/2021_06_04_055759_seed_admin_user。 php", [Object(AppUser)] )
21供應商框架
23匠人:37
IlluminateFoundationConsoleKernel::handle(Object(SymfonyComponentConsoleInputArgvInput), Object(SymfonyComponentConsoleOutputConsoleOutput)
有什么想法嗎?'plan_id' => $plan->id,這一行有什么問題,如何解決呢?
uj5u.com熱心網友回復:
這是因為計劃模型中沒有記錄。 首先檢查計劃模型中是否存在記錄
dd($plan)。
或者
$plan = $plan ? $plan->id : ''。
uj5u.com熱心網友回復:
問題正是錯誤中所說的那樣。$plan不是一個物件,所以試圖訪問它的本體會導致一個錯誤。
為什么$plan不是一個物件?因為Plan::find(1);不能找到一個id為1的計劃。$plan可能是null,所以你實際上在運行null->id。
由于你正在運行遷移,你可能想確保這段代碼在你的計劃表被填充后運行。我會用php artisan migrate:fresh --seed(警告:這將清空你的資料庫表,然后用migrations/seeders重新填充它們)或一般的播種來試一下。
也可以考慮使用findOrFail而不是find來在模型未被找到時拋出一個例外,因為你在這個例子中的后續代碼依賴于模型被找到。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/307805.html
標籤:
