Отношения модели laravel

Я не могу подключиться к функции модели в laravel 5.6

     <img src="{{$item->file_id ? $item->photo->file_url() : 
    "http://www.ecmsnews.com/wp-content/themes/nucleare-pro/images/no-image-box.png"}}"  
     width="200" height="100">

здесь я вызываю $ item file_id, чтобы найти изображение

public function photo(){
       return $this->belongsTo('App\Models\CRM_STAFF\Staff_files', 'file_id');
  }

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

 public function file_url(){
        return ($this->_domain).($this->id);
}

но я получаю такую ​​ошибку введите описание изображения здесь

File_url () объявлен в модели фотографии? если нет, то где это заявлено?

Steve 31.10.2018 13:18

Подключите отладчик, найдите $ item, возвращающий ошибку, убедитесь, что идентификатор файла существует в таблице, представляющей Staff_files. Вероятно, вам понадобится лучшая проверка ссылочной целостности на вашем FK.

Devon 31.10.2018 13:18

не было бы лучше проверить, существует ли связь, а не существует ли file_id? т.е. $item->photo ? $item->photo->file_url() : "http://www.ecmsnews.com/wp-content/themes/nucleare-pro/imag‌​es/no-image-box.png"

Matt Jameson 31.10.2018 13:20

@SteveNosse $ item-> photo-> file_url () - это $ item-> model-> model

Ahmad Usmanov 31.10.2018 13:21

@Devon $ item-> file_id имеет [932]

Ahmad Usmanov 31.10.2018 13:22

@AhmadUsmanov, я не говорил, что не было идентификатора файла. Я сказал, убедитесь, что идентификатор файла существует в связанной таблице. \

Devon 31.10.2018 13:23

@MattJameson извини, но как это проверить? Если нет, что мне делать?

Ahmad Usmanov 31.10.2018 13:24

@Devon это точно существует

Ahmad Usmanov 31.10.2018 13:25

@MattJameson Я получаю ту же ошибку, что и на фото под проблемой

Ahmad Usmanov 31.10.2018 13:33

@AhmadUsmanov, значит, у вас неправильные отношения. Ключи совпадают?

Devon 31.10.2018 13:37

@Devon, это проблема, ключи совпадают на 100%, но нет соединения

Ahmad Usmanov 31.10.2018 13:38

попробуйте указать оба ключа в отношении отношения, а не только внешний ключ

Matt Jameson 31.10.2018 13:39

Можете ли вы добавить и foreign_key, и local_key при определении отношения и протестировать его?

Prafulla Kumar Sahu 31.10.2018 13:41
1
13
104
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

добавьте with('photo') в модель, чтобы загрузить отношение. затем проверьте, не является ли $item->photo нулевым

$item = Item::with('photo')->where(...)->get();
return view('yourview', compact('item'));

тогда в представлении

<img src="{{!is_null($item->photo) ? $item->photo->file_url() : "http://www.ecmsnews.com/wp-content/themes/nucleare-pro/images/no-image-box.png"}}" width="200" height="100">

Активная загрузка необязательна, и ее использование в сочетании с first () совершенно не нужно.

Devon 31.10.2018 13:36

Спасибо за совет, сэр, но я думаю, вы неправильно понимаете проблему, которую я проверяю на null, но поле не является нулевым, и я думаю, что я не могу соединить 2 модели друг с другом

Ahmad Usmanov 31.10.2018 13:37

Спасибо всем, кто хотел помочь Я нашел ответ проблема заключалась в том, что я сохранял все файлы с помощью Json_encode, мне нужно было просто его декодировать

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