Laravel 5.5 не может получить данные выбранного столбца, используя - PullRequest
0 голосов
/ 16 сентября 2018

У меня есть 2 модели (User & UsersDetails) в связи с Eloquent Laravel.

Модель "Пользователь" Реализация с 'SelDetails'

public function SelDetails {
    return $this->belongsTo('App\UsersDetails', 'users_id');
}

Я хочу получить только два столбца 'creat_by_id', 'creation_by_name' из SelDetails

UserController

$users = User::with(['SelDetails' => function($query){
        $query->select(['created_by_id', 'created_by_name']);
    }])
    ->where('is_active', '=', 0)
    ->orderBy('id', 'desc')
    ->get();

Я получаю данные от User, но получаю пустое значение в SelDetails

[relations:protected] => Array
(
     [SelDetails] => 
)

Пожалуйста, поправьте меня.

Ответы [ 3 ]

0 голосов
/ 17 сентября 2018

Я могу ошибаться, но это может быть массив в select, попробуйте

$query->select('created_by_id', 'created_by_name');
0 голосов
/ 17 сентября 2018

ребята, спасибо за ваш ценный ответ на этот вопрос.Я получил решение следующим образом.

изменения в модели "Пользователь" Связь с 'SelDetails'

public function SelDetails {
    #return $this->belongsTo('App\UsersDetails', 'users_id');// the old one
    return $this->hasOne('App\UsersDetails', 'users_id');
}

изменения в "UserController"

$users = User::with('SelDetails')->where('is_active', '=', 0)->orderBy('id', 'desc')->get();

это изменения, которые я внес и получил результат

enter image description here

Спасибо

0 голосов
/ 16 сентября 2018

Вы пробовали что-то вроде

$users = App\Book::with('author:id,name')->get(); из документации ?В вашем случае это должно выглядеть так:

User::with('SelDetails:created_by_id,created_by_name')
    ->where('is_active', '=', 0)
    ->orderBy('id', 'desc')
    ->get();

with() метод может принимать строку (или массив, заполненный строками), например.relationName:column1,column2.

...