Laravel:如何 运行 播种关系
Laravel: how to run seeder with relationships
为什么我的播种器代码中的 "relationship" 不起作用?它可以毫无问题地插入用户模型。但不向 UserMeta 模型插入任何内容。甚至没有任何错误。
我已经在控制器中测试了这段代码。它在 "relationship"
下运行良好
<?php
use Illuminate\Database\Seeder;
use App\User;
use App\UserMeta;
class MyUsersTableSeeder extends Seeder
{
/**
* Auto generated seed file.
*
* @return void
*/
public function run()
{
if (User::count() == 0) {
$user = User::create([
'name' => 'Admin',
'email' => 'admin@admin.com',
'password' => bcrypt('password'),
'remember_token' => str_random(60),
]);
$user_meta = new UserMeta([
'meta_key' => 'role',
'meta_value' => 'admin',
]);
$user->UserMeta()->save($user_meta);
}
}
}
模范用户
public function UserMeta()
{
return $this->hasOne('App\UserMeta', 'user_id');
}
模型用户元数据
public function user()
{
return $this->belongsTo('App\User');
}
用户table
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
用户元table
Schema::create('usermeta', function (Blueprint $table) {
$table->increments('user_meta_id');
$table->integer('user_id')->unsigned();
$table->string('meta_key');
$table->string('meta_value');
});
试试下面的代码:
$user_meta = new UserMeta([
'meta_key' => 'role','user_id'=>$user_id,
]);
$user_meta->user_id=$user->id;
$user_meta->save();
将您的 usermeta
迁移更改为
Schema::create('usermeta', function (Blueprint $table) {
$table->increments('user_meta_id');
$table->integer('user_id')->unsigned();
// add foreign key constraint
$table->foreign('user_id')->references('id')->on('users');
$table->string('meta_key');
$table->string('meta_value');
});
并重新运行 您的迁移。
为什么我的播种器代码中的 "relationship" 不起作用?它可以毫无问题地插入用户模型。但不向 UserMeta 模型插入任何内容。甚至没有任何错误。
我已经在控制器中测试了这段代码。它在 "relationship"
<?php
use Illuminate\Database\Seeder;
use App\User;
use App\UserMeta;
class MyUsersTableSeeder extends Seeder
{
/**
* Auto generated seed file.
*
* @return void
*/
public function run()
{
if (User::count() == 0) {
$user = User::create([
'name' => 'Admin',
'email' => 'admin@admin.com',
'password' => bcrypt('password'),
'remember_token' => str_random(60),
]);
$user_meta = new UserMeta([
'meta_key' => 'role',
'meta_value' => 'admin',
]);
$user->UserMeta()->save($user_meta);
}
}
}
模范用户
public function UserMeta()
{
return $this->hasOne('App\UserMeta', 'user_id');
}
模型用户元数据
public function user()
{
return $this->belongsTo('App\User');
}
用户table
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
用户元table
Schema::create('usermeta', function (Blueprint $table) {
$table->increments('user_meta_id');
$table->integer('user_id')->unsigned();
$table->string('meta_key');
$table->string('meta_value');
});
试试下面的代码:
$user_meta = new UserMeta([
'meta_key' => 'role','user_id'=>$user_id,
]);
$user_meta->user_id=$user->id;
$user_meta->save();
将您的 usermeta
迁移更改为
Schema::create('usermeta', function (Blueprint $table) {
$table->increments('user_meta_id');
$table->integer('user_id')->unsigned();
// add foreign key constraint
$table->foreign('user_id')->references('id')->on('users');
$table->string('meta_key');
$table->string('meta_value');
});
并重新运行 您的迁移。