Laravel 播种机:调用未定义的方法 Illuminate\Notifications\Notification::getConnectionName()
Laravel seeder : Call to undefined method Illuminate\Notifications\Notification::getConnectionName()
我有两个模型之间的多对多关系:
用户
namespace App\Models;
class User extends Model
{
use HasApiTokens, Notifiable,hasFactory;
/**
* The attributes that are mass assignable.
*
* @var array
*/
];
}
通知
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Notification extends Model
{
/**
* @var array
*/
protected $guarded = ['id'];
use HasFactory;
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function user()
{
return $this->belongsTo(User::class);
}
}
我为每个模型创建了一个 factory
和一个调用两个工厂的 Seeder
以创建 users
并将通知附加到每个模型。
NotificationUserSeeder:
<?php
namespace Database\Seeders;
use App\Models\Notification;
use App\Models\User;
use Illuminate\Database\Seeder;
class MockNotificationUser extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
}
}
当 运行 db:seed
:
时出现此错误
Call to undefined method Illuminate\Notifications\Notification::getConnectionName()
由于您将模型名称命名为 Notification
。并且在导入播种机 class 时,看起来您已经导入了
use Illuminate\Notifications\Notification;
而不是
use App\Models\Notification;
已更新
由于模型名称和 Illuminate Notification facade 的冲突,问题出在用户模型上。用户模型中未使用通知外观,因此最好删除通知导入。假设如果你正在使用 Notification illuminate 那么你可以使用任何一个导入作为别名
我有两个模型之间的多对多关系:
用户
namespace App\Models;
class User extends Model
{
use HasApiTokens, Notifiable,hasFactory;
/**
* The attributes that are mass assignable.
*
* @var array
*/
];
}
通知
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Notification extends Model
{
/**
* @var array
*/
protected $guarded = ['id'];
use HasFactory;
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function user()
{
return $this->belongsTo(User::class);
}
}
我为每个模型创建了一个 factory
和一个调用两个工厂的 Seeder
以创建 users
并将通知附加到每个模型。
NotificationUserSeeder:
<?php
namespace Database\Seeders;
use App\Models\Notification;
use App\Models\User;
use Illuminate\Database\Seeder;
class MockNotificationUser extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
}
}
当 运行 db:seed
:
Call to undefined method Illuminate\Notifications\Notification::getConnectionName()
由于您将模型名称命名为 Notification
。并且在导入播种机 class 时,看起来您已经导入了
use Illuminate\Notifications\Notification;
而不是
use App\Models\Notification;
已更新 由于模型名称和 Illuminate Notification facade 的冲突,问题出在用户模型上。用户模型中未使用通知外观,因此最好删除通知导入。假设如果你正在使用 Notification illuminate 那么你可以使用任何一个导入作为别名