Я не могу узнать, как решить эту проблему, поэтому пришло время получить помощь от знающих людей (еще раз ...)
Контекст
Таблица «users»
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name', 40);
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
Таблица «userprofiles»
public function up()
{
Schema::create('userprofiles', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id');
$table->string('avatar');
$table->text('description');
$table->string('social');
$table->string('video');
$table->timestamps();
});
}
** Сеялка **
public function run()
{
$user = App\User::create([
'name' => 'Unicorn',
'email' => 'unicorn@gmail.com',
'password' => bcrypt('password'),
'superadmin' => 1,
]);
App\Userprofile::create([
'user_id' => $user->id,
'avatar' => '/uploads/avatars/avatar.jpg',
'description' => 'You just keep learning',
'social' => 'facebook.com',
'video' => 'youtube.com',
]);
}
Модель Userprofile (в App / Userprofile.php)
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\User;
class Userprofile extends Model
{
protected $fillable = [
'user_id', 'avatar', 'description', 'social', 'video'
];
public function user() {
return $this->belongsTo('App\User', 'user_id');
}
}
Модель User в App / User.php
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Userprofile;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password', 'superadmin'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token'
];
public function userprofile() {
return $this->hasOne('App\Userprofile', 'user_id');
}
}
Модель User в App/save/User.php
То же, что было показано ранее, НО без публичной функции userprofile () Если функция userprofile () добавлена в этот файл User.php, код работает нормально.
Маршрут, используемый для отображения результата
Route::get('/test', function () {
//dd(App\User::find(1)->userprofile);
var_dump(App\User::find(1)->userprofile);
var_dump(DB::getQueryLog());
});
Сам результат
NULL array(0) { }
Если я только запрашиваю App\User::find(1) or App\Userprofile::find(1)
этоработает отлично.Но отношения нет.Я несколько раз пытался изменить код, но безуспешно, и даже добавил внешний ключ, тогда как он должен работать без него (если я не ошибаюсь).
Спасибо за вашу помощь!