我正在製作一個Symfony的應用程序,我正在創建數據庫和存儲庫。我需要進行查詢,從表orders
中選擇今天的日期(字段date
是datetime
),並且其中user
屬性匹配search
變量或product
屬性匹配search
變量。比賽也必須不區分大小寫。簡單地說 - 用戶選擇日期時間(今天,所有時間或最近7天)並鍵入字符串,我需要獲取指定日期(今天,所有時間或最近7天)內的所有訂單,以及訂單中的product
包含search
或user
屬性包含search
。以下是我迄今爲止Symfony3 queryBuilder如何用OR搜索以及如何搜索子串?
$queryBuilder->
where('DATE_DIFF(orders.date, CURRENT_DATE()) = 0')->
andWhere("order.user LIKE '%search%'")->
setParameter('search',$search);
我必須符合兩個user
和product
性質,我需要匹配字符串的一部分,而不是整個字符串。
例如,如果用戶搜索mike
我需要匹配用戶Mike Johnson
或產品mike
。
我曾考慮過使用orWhere
,但它只會匹配日期,即使其他兩個搜索都是錯誤的。所以我用andWhere
,但現在我該如何添加第三個標準?我想過在addWhere
中加入OR。
我在這裏看到很多答案,但其中大多數都很老。有些來自5年前。我不知道'DATE_DIFF'是否是正確的選擇,或者LIKE
也是正確的選擇。在使用Doctrine的Symfony中,我可以使用SELECT
進行簡單的查詢並將其寫下。但是,我想使用queryBuilder的全部容量,並儘可能少地使用像LIKE
或'OR'(雙關語)這樣的關鍵字。
謝謝,我也想過這樣做,但是有沒有辦法使用由queryBuilder提供的功能,可以從某些用途給我? –
用新的解決方案更新答案,但我認爲對於你的情況更好的是第一個@ЛуциПетков –