Форум программистов, компьютерный форум, киберфорум
Наши страницы
Symfony
Войти
Регистрация
Восстановить пароль
 
Yourasik
1 / 1 / 6
Регистрация: 31.05.2014
Сообщений: 168
Завершенные тесты: 1
#1

ORM, Symfony 4, SQL Запрос - Symfony

13.06.2018, 09:58. Просмотров 122. Ответов 2

Объясните пожалуйста, как правильно сделать, мне необходимо получить результат следующего запроса:
SQL
1
2
3
4
5
6
SELECT 
    VALUE 
FROM VARIABLES 
WHERE 
    id_language = (SELECT VALUE FROM globalSetting WHERE code = \'lang\' limit 1)
    and code = :code
Для взаимодействия контроллера и сущности я использую следующий mapping :
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
App\Entity\Variables:
  type: entity
  table: variables
  repositoryClass: App\Repository\VariablesRepository
  id:
    id:
      type: guid
  fields:
    name:
      type: string
      length: 50
      nullable: false
    code:
      type: string
      length: 100
      nullable: false
    value:
      type: string
      length: 100
      nullable: false
    id_language:
      type: integer
      length: 11
      nullable: false
Модель:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
 
class Variables
{
    private $id;
    private $name;
    private $code;
    private $value;
    private $id_language;
 
    public function getId(): int
    {
        return $this->id;
    }
 
    public function getId_language(): int
    {
        return $this->id_language;
    }
 
    public function getValue(): string
    {
        return $this->value;
    }
 
}
Контроллер :
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
namespace App\Controller\Admin;
 
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
 
class AdminsController extends Controller
{
    private $entityManger;
 
    public function __construct()
    {
        $this->entityManger = $this->getDoctrine()->getManager();
    }
 
    public function entrance(Request $request)
    {
        $title = "Admin panel";
 
        if($request->isMethod('POST'))
        {
            $error = "";
            $login = $request->get('login');
            $password = $request->get('password');
 
            $user = $this->entityManger->getRepository('App:Admins')
                ->findOneBy(array('login'=>$login));
 
            if(is_null($user))
            {
                $result = $this->entityManger->getRepository('App:Variables')->getLanguageMessage("AuthorizationError");
                   // ->findOneBy(array('id_language' => $langId, 'code' => 'AuthorizationError'));
 
                print_r($result);
            }
 
 
            return $this->render('admin\login.html.twig', array('title' => $title, 'error' => $error));
        }
        else
        {
            return $this->render('admin\login.html.twig', array('title' => $title));
        }
    }
 
    public function logIn()
    {
        return $this->render('admin\login.html.twig');
    }
}
И VariablesRepository:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
namespace App\Repository;
 
use App\Entity\Product;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Symfony\Bridge\Doctrine\RegistryInterface;
 
/**
 * @method Product|null find($id, $lockMode = null, $lockVersion = null)
 * @method Product|null findOneBy(array $criteria, array $orderBy = null)
 * @method Product[]    findAll()
 * @method Product[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
 */
class VariablesRepository extends ServiceEntityRepository
{
    public function __construct(RegistryInterface $registry)
    {
        parent::__construct($registry, Product::class);
    }
 
    public function getLanguageMessage($code)
    {
        $conn = $this->getEntityManager()->getConnection();
 
        $query =
        "
            select 
                value 
            from variables 
            where 
                id_language = (SELECT value FROM globalSetting WHERE code = \'lang\' limit 1)
                and code = :code
        ";
 
        $stmt = $conn->prepare($query);
        $stmt->execute(['code' => $code]);
 
        // returns an array of arrays (i.e. a raw data set)
        return $stmt->fetchAll();
    }
 
//    /**
//     * @return Product[] Returns an array of Product objects
//     */
    /*
    public function findByExampleField($value)
    {
        return $this->createQueryBuilder('p')
            ->andWhere('p.exampleField = :val')
            ->setParameter('val', $value)
            ->orderBy('p.id', 'ASC')
            ->setMaxResults(10)
            ->getQuery()
            ->getResult()
        ;
    }
    */
 
    /*
    public function findOneBySomeField($value): ?Product
    {
        return $this->createQueryBuilder('p')
            ->andWhere('p.exampleField = :val')
            ->setParameter('val', $value)
            ->getQuery()
            ->getOneOrNullResult()
        ;
    }
    */
}
Я изучаю symfony, до это как правило писал на чистом php, понимаю, что фреймворк должен мне облегчить жизнь, но пока все совсем наоборот, кажется все дико запутанным. Зачем вообще существуют классы Repository? Разве они не нужны только когда mapping прописывается в аннотациях? Пожалуйста подскажите. Без фреймворка я бы давным давно сделал то что мне нужно .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2018, 09:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос ORM, Symfony 4, SQL Запрос (Symfony):

Составить запрос с querybuilder. Doctrine 2, Symfony 2
Итак, есть следующие сущности (указаны только ключевые для данной задачи поля), подвязаны к таблицам в БД: /** * File * *...

ORM запрос Kohana
Всем доброго времени суток. Есть такой запрос. public function get_article($id = '') { $sql = "SELECT * FROM "....

ORM redbean php
<?php require 'rb.php'; R::setup( 'mysql:host=localhost;port=3306;dbname=users222', 'root' ); $data = $_POST; ...

Kohana, структура файлов ORM
Структура ORM в Kohana, как я понял, такова, что каждая модель, наследуемая от ORM должна быть связана с определенной таблицей - это...

Doctrine-module orm выдает 1045
Доброго времени суток! Очень нужна помощь ) пересмотрела все обсуждения этого вопроса здесь. пока не могу решить проблему. Ситуация такая:...

ORM ManyToMany как OneManyOne в Symfony2
Уровень познания симфони у меня пока не высок и я совсем запутался в зависимостях. Вобщем была у меня такая персона (геттеры и сеттеры...

2
ytf
203 / 216 / 174
Регистрация: 15.08.2017
Сообщений: 1,186
19.06.2018, 12:38 #2
Цитата Сообщение от Yourasik Посмотреть сообщение
Без фреймворка я бы давным давно сделал то что мне нужно
чтобы пользоваться фреймворком, сначала нужно самому написать фреймворк
0
Jewbacabra
19.06.2018, 19:19     ORM, Symfony 4, SQL Запрос
  #3

Не по теме:

Цитата Сообщение от ytf Посмотреть сообщение
чтобы пользоваться фреймворком, сначала нужно самому написать фреймворк
Можно продолжить:
Чтобы пользоваться ЯП, сначала нужно самому создать ЯП
Чтобы пользоваться компьютером, сначала нужно самому изобрести компьютер
Чтобы использовать электричество, сначала нужно самому сделать свою электростанцию
Чтобы жить дома, сначала нужно самому построить дом
Чтобы покупать еду, сначала нужно самому пойти на охоту
И т.д.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2018, 19:19
Привет! Вот еще темы с ответами:

Symfony 2.*
Всем привет. Недавно начал изучать Symfony. Я так думаю у меня будет возникать много вопросов. Поэтому и создаю эту тему! Если решения...

Symfony 2
Я новичок в symfony и поэтому решил посоветоватся с теми у кого больше опыта . Нужно написать админку , но я не могу выбрать правильный...

Книжка о Symfony
Кто-то может посоветовать какуе-то книжку кто можно прочитать о Symfony, или какуе-то хорошую статью, но лучше книжку

Блог на Symfony 2
Привет всем симфонистам, не так давно начал изучать симфони, сейчас делаю учебный блог. На данный момент сконфигурирован бандл User...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru