Warum "Beziehung" in meinem Seeder-Code nicht funktioniert? Es fügt ohne Probleme in das Benutzermodell ein. Aber fügt nichts in das UserMeta-Modell ein. Es gibt nicht einmal einen Fehler.
Ich habe diesen Code im Controller getestet. Es funktionierte gut mit "Beziehung"Laravel: Wie man Sämaschine mit Beziehungen läuft
<?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' => '[email protected]',
'password' => bcrypt('password'),
'remember_token' => str_random(60),
]);
$user_meta = new UserMeta([
'meta_key' => 'role',
'meta_value' => 'admin',
]);
$user->UserMeta()->save($user_meta);
}
}
}
Modell Benutzer
public function UserMeta()
{
return $this->hasOne('App\UserMeta', 'user_id');
}
Modell UserMeta
public function user()
{
return $this->belongsTo('App\User');
}
Benutzer Tabelle
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
usermeta Tisch
Schema::create('usermeta', function (Blueprint $table) {
$table->increments('user_meta_id');
$table->integer('user_id')->unsigned();
$table->string('meta_key');
$table->string('meta_value');
});
zeigen Sie beide Modellbeziehungen –
hat die Benutzertabelle usermeta_id? – Sletheren