Laravel [6.13.1] Красноречивая связь с результатом, не являющимся объектом - PullRequest
0 голосов
/ 03 февраля 2020

Laravel Версия: 6.13.1, PHP Версия: 7.2.20, Драйвер базы данных и версия: 10.3.16-MariaDB.

При использовании в отношениях, результат не является объектом.

Результат $ family - это объект

ProfileModel.php : 

public function getFamilyAttribute()
{
    $arr = [];
    $family_status = MsFamilyStatus::get();
    if ( $family_status->count() ) {
        foreach ($family_status as $key => $value) {
            $family = $this->attr_family
                // ->where('ms_family_status_id', $value->id )
                ->first();
            $arr[] = $family->name; // result is object
        }
    }
    return collect( $arr );
}

public function attr_family()
{
    return $this->hasMany('App\Models\ProfileAttrFamily', 'profile_id');
}

Result $ family - это не объект, а массив

ProfileModel.php :

public function getFamilyAttribute()
{
    $arr = [];
    $family_status = MsFamilyStatus::get();
    if ( $family_status->count() ) {
        foreach ($family_status as $key => $value) {
            $family = $this->attr_family
                ->where('ms_family_status_id', $value->id )
                ->first();
            // $arr[] = $family->name; // error non object
            $arr[] = $family['name']; // result is array, why result is array not object?
        }
    }
    return collect( $arr );
}

public function attr_family()
{
    return $this->hasMany('App\Models\ProfileAttrFamily', 'profile_id');
}
Controller : 

print_r( $model->family );

как результаты могут быть массивом, когда оператор where добавлено?

...