Как печатение Дружи с Eloquent без метода “implode” и “pluck”

У меня есть связи hasMany y belongsTo, когда я пробую печатать их очевидно, я соглашаюсь на модель Усер таким образом.

У меня есть две Модели, ExperienciaLaboral и Users,

Модель Усер

public function expLaboral()
{
    return $this->belongsTo(ExperienciaLaboral::class);
}

и Модель Эксперьенсиалабораль

public function user()
{
    return $this->belongsTo(User::class);
}

С этим он позволяет мне соглашаться таким образом

auth()->user()->expLaboral()->pluck('Empresa')->implode(' ');

Но поскольку у пользователя может быть большой Опыт работы, захотев напечатать это в таблице com implode хороший очевидный он соединяется совсем и я хотел бы знать, есть ли какой-то способ печатать только весь Опыт работы без необходимости Implode

1
задан 05.11.2019, 02:43
1 ответ

Ты показываешь работать с одной relaciГіn 1:N между моделью User и моделью ExperienciaLaboral, следовательно deberГ-схвати исправлять следующее:

  • В модели User у тебя должен быть один mГ©todo названный expLaborales() таким образом:

CГіdigo

class User extends Model
{
    public function expLaborales()
    {
         return $this->hasMany(ExperienciaLaboral::class);
    }
}
  • Ahora в модели ExperienciaLaboral один mГ©todo названный user() asГ-:

CГіdigo

class ExperienciaLaboral extends Model 
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

то, что я сделал fuГ©:

  • mГ©todo llamarГЎ expLaborales() благодаря тому, что мы показываем, что у пользователя есть много реестров трудового опыта, тогда это должно идти во множественном числе.
  • mГ©todo llamarГЎ user() в модели ExperienciaLaboral благодаря тому, что aquГ - мы показываем, что несколько трудового опыта принадлежит пользователю. Последующие

....

Сейчас в драйвере, который мы принимали бы, называется: UserController.php мы делаем консультацию asГ-:

$datos = User::with('expLaborales')->get();

то, что я сделал fuГ©:

  • С eager loading загрузил все связи модели User моделью ExperienciaLaboral в travГ©s mГ©todo expLaborales() reciГ©n созданный

Следующее, что я делаю, состоит в виде в том, чтобы повторять ее colecciГіn, который предыдущая консультация возвращает мне таким образом:

@foreach($datos as $data)
    {{ $data->name }}
    @foreach($data->expLaborales as $expLaboral)
        {{ $expLaboral->nombreExperienciaLaboral }}
    @endforeach
@endforeach
  • Первый foreach() мы это используем, чтобы пробегать данные модели User, которая возвратила нам консультацию
  • Второй foreach, это используем, чтобы пробегать данные, которых нам возвратил mГ©todo expLaborales(), которые связаны моделью ExperienciaLaboral
  • , Чтобы возвращать имя колонны, где эта имя трудового опыта, ты только должен изменять эту lГ-nea:

CГіdigo

{{ $expLaboral->nombreExperienciaLaboral }}

только меняет nombreExperienciaLaboral по имени соответствующей колонны.

Важно: Чтобы работать со связями, которые предлагает Laravel, ты должен использовать их mГ©todos для, которые он размещает этого и особенно, если ты работаешь с одной relaciГіn 1:N использует eager loading, чтобы делать честолюбивый груз из главной модели с Вашими связанными реестрами.

Ссылок

0
ответ дан 01.12.2019, 12:46

Теги

Похожие вопросы