меня модель с таким методом:
                  
                  
                  public function getOwner()
                  
                  
                  {
                  
                  
                      return $this->type === TypesEnum::OWNER->value
                  
                  
                          ? $this->car->owner()
                  
                  
                          : $this->car->driver();
                  
                  
                  }
                  
                  
                  
                  
                  
                  Суть вопроса: Можно ли в модели использовать доступ к $this->type? Вроде как есть инфа, что с eager loading это не сработает, так как там this->type будет еще пустым. С другой стороны - некоторые пытаются меня убедить, что никаких проблем не будет и так делать можно.
                  
                  
                
Жадная загрузка работает на билдере, а не свойстве модели, так что будет пустым и возникнут конфликты. Чтобы это работало корректно, нужен инстанс конкретной модели.
 DevilSAM
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          DevilSAM
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  спасибо. а есть тогда способ мне получить, то, что хочу из метода в модели? Или уже непосредственно в коде надо с конкретным экземпляром работать?
Метод в модели будет работать только в рамках самой модели. Я бы лучше сделал так: Model::with('car.owner', 'car.driver'), и уже на выходе при обработке готовых записей обрабатывал их в зависимости от типа. $model->type === ... ? $model->car->owner : $model->car->driver
 DevilSAM
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          DevilSAM
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  да, изначально так и было. Но потом подумал, что можно в модель засунуть. А потом получил по шапке за такое и, видимо, придется вернуть как было 😂
Обсуждают сегодня