Laravel 5.8 обновляет красноречивую модель и вызывает аксессор в одной строке?

У меня есть таблица contact_info_scopes, и одной из областей является «По умолчанию», которая, вероятно, будет наиболее распространенной областью действия, поэтому я создаю метод доступа.

public function getDefaultScopeIdAttribute()
{
    return $this::where('contact_info_scope', 'Default')
        ->first()
        ->contact_info_scope_uuid;
}

чтобы получить defaultScopeId и задаюсь вопросом, как я могу обновить модель ContactInfoScope и получить к ней доступ в одной строке. Я знаю, что могу обновить это:

$contactInfoScope = new ContactInfoScope();

а затем получить к нему доступ:

$contactInfoScope->defaultScopeId;

но я хотел бы сделать это одной строкой, не сохраняя класс в переменной. Открыты для любых других творческих способов решения этой проблемы, поскольку аксессор здесь может быть не идеальным! Я был бы в порядке, просто создав публичную функцию (не в качестве средства доступа), но у меня была бы та же проблема с вызовом ее в одной строке. Спасибо :)


person Matt Larson    schedule 29.04.2019    source источник


Ответы (2)


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

(new ContactInfoScope)->defaultScopeID

Не пробовал в Laravel, но работает на обычном PHP

person ColinMD    schedule 29.04.2019

//LARAVEL
//write on model ----------------------------------


protected $appends = ['image']; 

public function getImageAttribute()
    {
        
          $this->school_iMage =   \DB::table('school_profiles')->where('user_id',$this->id)->first();
          $this->studend_iMage =   \DB::table('student_admissions')->where('user_id',$this->id)->first();

        return $this;

    }

//call form anywhere blade and controller just like---------------------------

auth()->user()->image->school_iMage->cover_image;
 or
User::find(1)->image->school_iMage->cover_image; 
 or 
Auth::user()->image->school_iMage->cover_image;

// можно проверить dd( User::find(1)-›image);

person MOAZZAM RASOOL    schedule 24.01.2021