Ошибка Laravel 5.3: попытка получить свойство не-объекта

Laravel 5.3 Я пытаюсь получить поля из таблиц пользователей и мобильных телефонов

таблица пользователей имеет идентификатор первичного ключа и в моих таблицах мобильных телефонов есть поле users_id

поэтому я хочу получить все номера всех users_id

select u.*,m.mobile,ud.name from users u 
left join userdetails ud on ud.user_id = u.id
left join mobiles m on m.users_id = u.id
where m.mobiletypes_id = 1 and m.deleted_by is null

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

моя модель пользователя

<?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 = [
         'email', 'password','role_id'
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];


    public function mobile()
    {
        return $this->hasMany('App\mobile','users_id');
    }

    public function userdetails()
    {
        return $this->hasOne('App\Userdetails');
    }

}

моя мобильная модель

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class mobile extends Model
{
    protected $primaryKey = 'mobiles_id';
    protected $fillable = ['mobile', 'mobiletypes_id', 'users_id', 'created_by', 'updated_by', 'deleted_by', 'created_at', 'updated_at'];




}

мой контроллер

public function employeeview () { // $ user = User :: all (); // получаем всех пользователей

$userdetails = User::with(['mobile' => function ($query) {
    $query->where('mobiletypes_id', 1);
} ,'userdetails'])->get(); // get all userdetails 

// $mobile = User::with('mobile')->get();

//$userdetails = User::all();
//return $user;
//return view('employeeview',compact('userdetails'));
return view('employeeview')->with('userdetails', $userdetails);

}

мой взгляд employeeview.blade.php

@foreach($userdetails as $u)
                                 <tr>
                                        <td>{{$u->id}} </td>
                                        <td>{{$u->userdetails->name}} </td>
                                        <td>{{$u->email}}</td>
                                        @foreach($u->mobile as $um)
                                        <td>{{$um->mobile}}</td>
                                        @endforeach  
                                    </tr> 

                                 @endforeach   

У пользователя много мобильных телефонов, поэтому $u->mobile - это не один мобильный телефон, а набор мобильных телефонов.

apokryfos 17.05.2018 12:18

@apokryfos Я отредактировал код, вы можете проверить сейчас

shank 17.05.2018 13:51

Вы все еще получаете ту же ошибку?

apokryfos 17.05.2018 14:22
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
203
1

Ответы 1

Сначала я бы посоветовал разместить dd ($ userdetails) перед возвратом представления, чтобы убедиться, что это действительно то, что вы ищете.

При необходимости создайте переменную с именем

$visible = [] 

и поместите внутрь него все видимые поля.

Мне нужен весь идентификатор из пользовательской таблицы, даже если в мобильном

shank 17.05.2018 14:22

попробуйте это return: return view ('employeeview', ['userdetails' => $ userdetails-> toArray ()]);

abr 17.05.2018 15:34

Ошибка: htmlspecialchars () ожидает, что параметр 1 будет строкой,

shank 18.05.2018 07:47

Другие вопросы по теме