Найти объект symfony 4 по идентификатору пользователя?

#php #symfony

#php #symfony

Вопрос:

Итак, у меня есть многоточечная связь между фотоальбомами и пользователем. Когда пользователь создает альбом, его user_id вставляется в таблицу album.

Как я могу сделать поисковый запрос в моем контроллере, который отправит поле user_id из моей таблицы album в мой twig view? Цель здесь — отображать только альбомы, связанные с текущим зарегистрированным пользователем. (Как вы можете видеть, в настоящее время я извлекаю каждый альбом с помощью метода findAll()).

AlbumController.php :

 /**
 * @var AlbumRepository
 */
private $repository;
private $em;

/*Injection repository*/
public function __construct(AlbumRepository $repository, ObjectManager $em)
{
    $this->repository = $repository;
    $this->em = $em;
}

/**
 * @Route("/admin", name="admin.album.index")
 * @return SymfonyComponentHttpFoundationResponse
 */
public function index()
{
    $albums = $this->repository->findAll();
    return $this->render('admin/album/index.html.twig', compact('albums'));
}
  

index.html.twig:

 {% for album in albums %}
            <tr>
                <td>{{ album.title }}</td>
                <td>
                    <a href="{{ path('admin.album.edit', {id: album.id}) }}" class="btn btn-secondary">Editer</a>
                    <form method="POST" action="{{ path('admin.album.delete', {id: album.id}) }}"style="display: inline-block"
                          onsubmit="return confirm('Voulez-vous vraiment supprimer cet album ?')">
                        <input type="hidden" name="_method" value="DELETE">
                        <input type="hidden" name="_token" value="{{ csrf_token(('delete' ~ album.id)) }}">
                        <button class="btn btn-danger">Supprimer</button>
                    </form>
                </td>
            </tr>
        {% endfor %}
  

Таблица моего альбома

Моя пользовательская таблица

Я действительно надеюсь, что я четко описал свою проблему, обратите внимание, что я начинающий разработчик, поэтому, возможно, я что-то пропустил.

большое вам спасибо 🙂

Ответ №1:

Я полагаю, что у вашего Album объекта есть свойство user.

Вы можете извлекать альбомы по пользователю следующим образом :

 $user = $this->getUser();
$albums = $this->repository->findBy([
  'user' => $user // you can pass the user id or a user object
]);