типа get{attr}Attribute?
                  
                  
                  
                  
                  
                  
                  
                  
                  public function getFullAddressAttribute(): string
                  
                  
                  {
                  
                  
                    return $this->country . ', ' . $this->city;
                  
                  
                  }
                  
                  
                  
                  
                  
                  или
                  
                  
                  
                  
                  
                  
                  
                  
                  public function fullAddress(): string
                  
                  
                  {
                  
                  
                    return $this->country . ', ' . $this->city;
                  
                  
                  }
                  
                  
                
В случае аксессора, будет работать: $model->full_adress
$model['full_adress'] функционал Appending https://laravel.com/docs/10.x/eloquent-serialization#appending-values-to-json и др. плюшки
и это старый вариант. надо новый юзать
 DevilSAM
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          DevilSAM
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  protected function firstName(): Attribute { return Attribute::make( get: fn (string $value) => ucfirst($value), ); } вот это? выглядит сложнее 😅
зато это современно выглядит, плюс есть плюшки, например кэширования объектов
 DevilSAM
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          DevilSAM
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  интересно получается... у меня есть модель Акт и поле комментарий. я пишу: public function comment(): Attribute { return Attribute::make( get: fn (string $value) => ucfirst($value), ); } Далее пытаюсь вызвать так: $act->comment - мне в ответ выдает не Атрибут, а строку из БД а если так: $act->comment() - тут уже возвращает Атрибут. Странно как-то... Идем дальше: пишу метод myComment public function myComment(): Attribute { return Attribute::make( get: fn (string $value) => $this->comment, ); } Пытаюсь вызывать: $act->my_comment - ошибка Argument #1 ($value) must be of type string, null given вызываю так: $act->myСomment() - так работает. Но судя по документации не так всё должно быть.
Метод должен быть protected
 DevilSAM
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          DevilSAM
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  ничего не изменилось 🤷🏻♂️
 DevilSAM
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          DevilSAM
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  public function comment(): Attribute { return Attribute::make( get: fn (string $value) => ucfirst($value), ); } $act->comment; метод вызывается и срабатывает. Но почему он возвращает строку, а не Атрибут?🤔
Когда свойство вызвал у тебя ок отработало, смотри типизацию, вместо стринга - нулл
суть данного метода вернуть уже преобразованные данные, зачем тебе аттрибут?
 DevilSAM
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          DevilSAM
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Мне и не нужен Атрибут. Просто подумал, что раз указан Атрибут, то и вернуться должен он... и буду там с ним возиться потом... Но оказывается там уже об этом позабитились 😄
Но ты и не метод вызываешь, а свойство, под капотом вызывается метод и тебе результат твоего гетера
Обсуждают сегодня