I have user_interests table which has the following columns
user_interests
user_id field_id value_id
user_id references id on users table, field_id references id on fields table, and value_id references column value in field_values table. They are as follows.
fields table
id name
1 gender
2 looking_for
field_values table
field_id value label
1 1 Men
1 2 Women
2 1 Relationship
2 2 Chatting
users table
id username email
1 authuser [email protected]
Currently I can seed users, fields, field_values table but I can not seed user_interests table. Any help is appreciated on how to do that. Here is my code.
User.php
<?php
namespace App;
use Carbon\Carbon;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'username',
'email',
];
public function userInterests()
{
return $this->belongsToMany(UserInterest::class, 'user_interests', 'id', 'user_id');
}
}
UserInterest.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class UserInterest extends Model
{
protected $table = 'user_interests';
protected $primaryKey = 'user_id';
protected $fillable = ['*'];
public $timestamps = false;
public function users()
{
return $this->belongsToMany(User::class, 'user_interests', 'id', 'user_id');
}
}
Field.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Field extends Model
{
protected $table = 'fields';
protected $guarded = [];
public function fieldValues()
{
return $this->hasMany(FieldValue::class, 'field_id');
}
}
FieldValue.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class FieldValue extends Model
{
protected $table = 'field_values';
protected $guarded = [];
public function userFields()
{
return $this->belongsTo(Field::class, 'field_id');
}
}
UserTableSeeder.php
<?php
use App\City;
use App\User;
use App\Gender;
use Carbon\Carbon;
use Faker\Factory as Faker;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
/**
* Class UserSeeder
*/
class UserTableSeeder extends Seeder
{
use ChunkSeeder;
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$seed = [];
for ($i = 0, $n = 150; $i < $n; $i++) {
$seed[] = factory(User::class)->make(
[
'username' => $faker->userName,
'email' => $faker->unique()->safeEmail,
]
)->toArray();
}
$this->seedChunks($seed, [User::class, 'insert']);
}
}