Laravel: hasOne возвращает нулевой массив - PullRequest
0 голосов
/ 16 мая 2018

Я не могу узнать, как решить эту проблему, поэтому пришло время получить помощь от знающих людей (еще раз ...)

Контекст

Таблица «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) этоработает отлично.Но отношения нет.Я несколько раз пытался изменить код, но безуспешно, и даже добавил внешний ключ, тогда как он должен работать без него (если я не ошибаюсь).

Спасибо за вашу помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...