亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有人可以建議一種使用 Doctrine (QueryBuilder) 和多個“where”

有人可以建議一種使用 Doctrine (QueryBuilder) 和多個“where”

PHP
守候你守候我 2023-10-22 21:49:01
我是 QueryBuilder 的新手,我正在嘗試執行 POST 請求(使用 JSON)來檢索數據庫中的一些信息。我使用數組是因為每個屬性可以有多個值。這是我當前發送的 JSON:{    "name":["Martin"],    "state":["Ohio", "Texas"],    "job":["Photographer", "Reporter"]}這是我的數據庫:ID  |   NAME        |   FIRST_NAME  |   STATE       |   JOB             |   SPEAK_FRENCH1   |   Martin      |   John        |   Ohio        |   Photographer    |   12   |   Martin      |   Max         |   Ohio        |   Reporter        |   13   |   Martin      |   Sophie      |   Texas       |   Model           |   14   |   Alexander   |   David       |   Kansas      |   Author          |   05   |   Archie      |   Kira        |   Maine       |   Photographer    |   16   |   Lushen      |   Albert      |   Nevada      |   Pilot, Model    |   17   |   Wilkins     |   Minnie      |   Utah        |   Tailor          |   08   |   Martin      |   Thomas      |   Texas       |   Reporter        |   19   |   Patino      |   Stephen     |   Virginia    |   Pilot, Reporter |   110  |   Ting        |   Maria       |   Nevada      |   Dentist         |   011  |   Brown       |   Barbara     |   Virginia    |   Reporter        |   112  |   Martin      |   William     |   Texas       |   Photographer    |   113  |   Zachary     |   Thomas      |   Virginia    |   Telephonist     |   1我想要的請求:SELECT * FROM 'application'WHERE SPEAK_FRENCH = 1AND NAME = "Martin"AND STATE = "Ohio"AND JOB LIKE "%Photographer%"OR SPEAK_FRENCH = 1AND NAME = "Martin"AND STATE = "Ohio"AND JOB LIKE "%Reporter%"OR SPEAK_FRENCH = 1AND NAME = "Martin"AND STATE = "Texas"AND JOB LIKE "%Photographer%"OR SPEAK_FRENCH = 1AND NAME = "Martin"AND STATE = "Texas"AND JOB LIKE "%Reporter%"
查看完整描述

2 回答

?
浮云間

TA貢獻1829條經驗 獲得超4個贊

使用 Doctrine 你可以這樣做:


? ? $queryBuilder = $this->createQueryBuilder('request');

? ? $queryBuilder

? ? ? ? ->andWhere($queryBuilder->expr()->andX(

? ? ? ? ? ? $queryBuilder->expr()->eq('user.speakFrench', ':speakFrench'),

? ? ? ? ? ? $queryBuilder->expr()->like('request.name', ':name'),

? ? ? ? ? ? $queryBuilder->expr()->in('request.state', ':states'),

? ? ? ? ? ? $queryBuilder->expr()->in('request.job', ':jobs'),

? ? ? ? ))

? ? ? ? ->setParameter('speakFrench', true)

? ? ? ? ->setParameter('name', 'Martin')

? ? ? ? ->setParameter('states', ['Ohio', 'Texas'])

? ? ? ? ->setParameter('jobs', ['Photographer', 'Reporter'])

? ? ? ? ->getQuery()

? ? ? ? ->getResult();

這應該是一個好的開始。

查看完整回答
反對 回復 2023-10-22
?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

以下似乎是符合您要求的有效查詢:


SELECT * 

  FROM application

 WHERE SPEAK_FRENCH = 1

    AND NAME = "Martin"

    AND STATE = IN("Ohio","Texas")

    AND (JOB LIKE "%Photographer%" OR JOB LIKE "%Reporter%");


查看完整回答
反對 回復 2023-10-22
  • 2 回答
  • 0 關注
  • 142 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號