belongsTo App\User возвращает только id laravel

220
05 сентября 2018, 04:40

Нужно получить экземпляр пользователя с помощью:

    public function user()
{
    return $this->belongsTo('App\User', 'id', 'user');
}

Но функция возвращает только id пользователя.

App\User:

    <?php
namespace App;
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 = [
        'name', 'avatar', 'steamid64', 'steamid'
    ];
    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'remember_token',
    ];
}
Answer 1

Во-первых, у вас перепутаны аргументы в методе belongsTo (хотя это проблему не решит). Правильно будет:

public function user()
{
    return $this->belongsTo('App\User', 'user', 'id');
}

Во-вторых, проблема в том, что вы пытаетесь обратиться к атрибуту-методу user, в то время как у вас уже есть в модели атрибут-число user.

Решение 1. Назвать метод для связи с User::class иначе, например, owner:

public function owner()
{
    return $this->belongsTo('App\User', 'user', 'id');
}

Тогда

$someObject->owner // будет содержать объект App\User.

Решение 2. Переименовать столбец в модели связанного объекта с user на user_id, как это и рекомендуется в Laravel.

// в файле миграции модели
$table->unsignedInteger('user_id');

и тогда уже заработает обращение к $someObject->user будет содержать объект App\User.

READ ALSO
составте цикл foreach

составте цикл foreach

Не выходит создать массив foreach с таким вот условием: Имеется таблица с полями idcontact1 idcontact2 status2 таких запроса

218
Как принять данные на сервере методом POST с одинаковым ключом массива?

Как принять данные на сервере методом POST с одинаковым ключом массива?

На странице есть фильтрВ этом фильтре я могу выбрать несколько свойств, например показать товары, которые имеют цвет: белый, красный, синий

219
Ошибка при выполнении програмы

Ошибка при выполнении програмы

Всем привет, помоги решить данную проблемувот код: https://pastebin

205