Почему, когда я возвращаю строковое значение из базы данных, оно дает мне строку с «http://localhost:8000» в ней?

Я сохраняю избранное фото в свою папку public/uploads/post и сохраняю строку с названием фотографии в свою базу данных. И когда я хочу удалить его, я не могу этого сделать. Затем я отслеживаю ошибку и просто понимаю, что когда я возвращаю значение поля моей фотографии в таблице, оно дает мне имя фотографии с http://localhost:8000 в нем.

Это мой код:

$featured = $request->featured;
$featured_new_name = time() . $featured->getClientOriginalName();
$featured->move('uploads/post', $featured_new_name);
$post = Post::create([
    'post_title' => $request->post_title,
    'post_content' => $request->post_content,
    'featured' => 'uploads/post/' . $featured_new_name,
    'category_id' => $request->category_id,
    'post_slug' => str_slug($request->post_title)
]);

Затем, когда я пытаюсь вернуть его с помощью die() :

die($post->featured);

Это дает мне этот результат:

http://localhost:8000/uploads/post/1545856404foto.jpg

Когда я умираю (), перед сохранением в базе данных он работает нормально:

die($featured_new_name);

Результат :

1545856533foto.jpg

Я возвращаю другое значение после сохранения в базу данных, и оно работает нормально:

die($post->post_title);

Результат :

asdsadadsada

Итак, прежде чем я сохраню в базу данных, имя фотографии работает нормально. Но после того, как я сохраняю в базу данных и возвращаю ее, имя фотографии портится. Что база данных так работает? Или это ошибка?


person Granite Bagas    schedule 26.12.2018    source источник
comment
Используете ли вы какую-то черту в классе для реализации рекомендуемого атрибута?   -  person Manuel Eduardo Romero    schedule 27.12.2018
comment
проверить саму базу. имя фото отображается там правильно?   -  person Giorgi Lagidze    schedule 27.12.2018
comment
@GiorgiLagidze, база данных работает нормально, я просто забыл, что в моей модели есть аксессор. Спасибо за помощь   -  person Granite Bagas    schedule 27.12.2018


Ответы (2)


Похоже, что в вашей системе есть дополнительная программная логика, которая либо

  1. Добавляет http://localhost:8000 к значению перед его сохранением
  2. Добавьте http://localhost:8000 к переменной (с помощью магического __geter) перед возвратом значения post_title

Это может быть что-то, что находится в самом вашем Post классе, или может происходить в событии слушатель. К сожалению, без дополнительной информации о вашей системе невозможно точно сказать, в чем проблема.

person Alan Storm    schedule 27.12.2018
comment
Спасибо за решение, я просто понимаю, что у меня есть аксессуар в моей модели. Теперь работает нормально - person Granite Bagas; 27.12.2018

попробуйте сохранить только название фотографии:

'featured' => $featured_new_name,

и вместо этого используйте полный адрес фотографии в атрибуте href вашего тега img.

person behnam    schedule 26.12.2018
comment
Проблема в том, что я забыл, что у меня есть аксессуар в моей модели. Но спасибо за помощь - person Granite Bagas; 27.12.2018