Неопределенное свойство: stdClass, данные HasOne - PullRequest
0 голосов
/ 07 июня 2019

Я не могу получить данные HasOne из базы данных.Как я могу сделать?

Я могу получить другие данные.

Контроллер;

$gelensunucu = Request::get('gelensunucu');
$gelenrol = Request::get('gelenrol');
$gelenkume = Request::get('gelenkume');

$veriler = DB::table('users')
    ->select(DB::raw("*"))
    ->where('kume_id', '=', $gelenkume)
    ->where('rol_id', '=', $gelenrol)
    ->where('sunucu_id', '=', $gelensunucu)
    ->get();

return view('home')->with('veriler', $veriler);

Модель пользователя;

protected $fillable = [ 'sunucu_id', 'rol_id',  'kume_id', 'tecrube' ...]

    public function kumeler()
    {
        return $this->hasOne('App\kumeler','id','kume_id');
    }

    public function roller()
    {
        return $this->hasOne('App\roller','id','rol_id');
    }

    public function sunucular()
    {
        return $this->hasOne('App\sunucular','id','sunucu_id');
    }

Другие модели;

class sunucular extends Model
{
    protected $table = 'sunucular';
}

Неопределенное свойство: stdClass ::$ sunucular (0)

1 Ответ

0 голосов
/ 07 июня 2019

Вы можете получить доступ к отношениям только при использовании модели User. Прямо сейчас вы звоните по следующему номеру:

$veriler = DB::table('users')...->get();

Результатом этого запроса является Collection из stdClass объектов, а не Collection из User экземпляров модели. Следовательно, вы не можете вызвать что-то вроде $user->sunucular, так как объекты по умолчанию stdClass не имеют свойства / метода с именем sunucular. Чтобы исправить это, используйте вашу User модель :

$veriler = User::where('kume_id', '=', $gelenkume)
->where('rol_id', '=', $gelenrol)
->where('sunucu_id', '=', $gelensunucu)
->get();

// Note:: You don't need to call `->select(DB::raw("*"))`; it's redundant.

Кроме того, убедитесь, что ваш пользователь импортировал свойство в ваш контроллер:

user App\User;

Или доступ через пространство имен:

$veriler = \App\User::...->get();

В любом случае, теперь у вас будет Collection из User экземпляров модели, которые имеют доступные отношения.

Таким образом, вы не можете использовать DB::table(), если хотите получить доступ к отношениям; они определены в модели User и должны запрашиваться способом, обеспечивающим доступ.

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