Comments (3)
Please enable debug ($notorm->debug = true
from command line) and send me the executed queries.
from notorm.
correct queries before commit are:
SELECT * FROM category;
with params:
array(0)
and second query
SELECT *
FROM category_strings
WHERE (category_strings.category_id IN (1, 2, 3, 4, 5, 6, 7, 12, 13, 14, 64, 60, 61, 65))
ORDER BY category_strings.category_id, IF(language = ?, 0, 1), IF(language = ?, 0, 1)
with params:
array(2) [
0 => "sk" (2)
1 => "cz" (2)
]
bad queries after commit are (with same params):
SELECT * FROM category;
and second:
(
SELECT *
FROM category_strings
WHERE (category_id = '1')
ORDER BY category_strings.category_id, IF(language = ?, 0, 1), IF(language = ?, 0, 1)
LIMIT 1 OFFSET 0) UNION (
SELECT *
FROM category_strings
WHERE (category_id = '2')
ORDER BY category_strings.category_id, IF(language = ?, 0, 1), IF(language = ?, 0, 1)
LIMIT 1 OFFSET 0) UNION (
SELECT *
FROM category_strings
WHERE (category_id = '3')
ORDER BY category_strings.category_id, IF(language = ?, 0, 1), IF(language = ?, 0, 1)
LIMIT 1 OFFSET 0) UNION (
SELECT *
FROM category_strings
WHERE (category_id = '4')
ORDER BY category_strings.category_id, IF(language = ?, 0, 1), IF(language = ?, 0, 1)
LIMIT 1 OFFSET 0) UNION (
SELECT *
FROM category_strings
WHERE (category_id = '5')
ORDER BY category_strings.category_id, IF(language = ?, 0, 1), IF(language = ?, 0, 1)
LIMIT 1 OFFSET 0) UNION (
SELECT *
FROM category_strings
WHERE (category_id = '6')
ORDER BY category_strings.category_id, IF(language = ?, 0, 1), IF(language = ?, 0, 1)
LIMIT 1 OFFSET 0) UNION (
SELECT *
FROM category_strings
WHERE (category_id = '7')
ORDER BY category_strings.category_id, IF(language = ?, 0, 1), IF(language = ?, 0, 1)
LIMIT 1 OFFSET 0) UNION (
SELECT *
FROM category_strings
WHERE (category_id = '12')
ORDER BY category_strings.category_id, IF(language = ?, 0, 1), IF(language = ?, 0, 1)
LIMIT 1 OFFSET 0) UNION (
SELECT *
FROM category_strings
WHERE (category_id = '13')
ORDER BY category_strings.category_id, IF(language = ?, 0, 1), IF(language = ?, 0, 1)
LIMIT 1 OFFSET 0) UNION (
SELECT *
FROM category_strings
WHERE (category_id = '14')
ORDER BY category_strings.category_id, IF(language = ?, 0, 1), IF(language = ?, 0, 1)
LIMIT 1 OFFSET 0) UNION (
SELECT *
FROM category_strings
WHERE (category_id = '64')
ORDER BY category_strings.category_id, IF(language = ?, 0, 1), IF(language = ?, 0, 1)
LIMIT 1 OFFSET 0) UNION (
SELECT *
FROM category_strings
WHERE (category_id = '60')
ORDER BY category_strings.category_id, IF(language = ?, 0, 1), IF(language = ?, 0, 1)
LIMIT 1 OFFSET 0) UNION (
SELECT *
FROM category_strings
WHERE (category_id = '61')
ORDER BY category_strings.category_id, IF(language = ?, 0, 1), IF(language = ?, 0, 1)
LIMIT 1 OFFSET 0) UNION (
SELECT *
FROM category_strings
WHERE (category_id = '65')
ORDER BY category_strings.category_id, IF(language = ?, 0, 1), IF(language = ?, 0, 1)
LIMIT 1 OFFSET 0)
from notorm.
I realize where the problem is. My Implementation of NotORM_Row is:
function offsetExists($offset) {
if (!isset($this->row[$offset])) {
$table = $this->result->table . "_translation";
$result = $this->$table()
->order(new NotORM_Literal('IF(language = ?, 0, 1)', 'cz'))
->order(new NotORM_Literal('IF(language = ?, 0, 1)', 'en'))->limit(1);
foreach ($result as $row) {
foreach ($row as $key => $val) {
$this->row[$key] = $val;
}
}
}
return parent::offsetExists($offset);
}
I use this because I need specify primary, secondary and also ternary language if primary and secondary don't exists.
and in this commit you change implementation for using UNION but params are only two array('cz','en')
.
whne I change my code, without NotORM_Literal, result is ok
$result = $this->$table()
->order("IF(language = '{$this->primaryLang}', 0, 1)")
->order("IF(language = '{$this->secondaryLang}', 0, 1)")->limit(1);
may be this problem (UNION with less params) is bug, I am not sure, but you can close this issue.
from notorm.
Related Issues (20)
- Should use apcu_* instead of apc_* if available HOT 1
- How to avoid TO_CHAR(date, format) being interpreted as join?
- Can't insert if date fields are empty
- output rows as array HOT 1
- how to know sql query HOT 6
- Cannot set fetch mode - always set to PDO::FETCH_ASSOC HOT 1
- add support for mongodb
- Please support another lang fields.
- Tablename with dash HOT 1
- Set NotORM to PHP7 defaults. HOT 2
- No maintenance? HOT 1
- DELETE All QUERY HOT 1
- "table" in comment is parsed HOT 1
- Is this project dead already ? HOT 5
- Join Question
- fetch() always returns "Call to a member function fetch() on a non-object" HOT 1
- Your letsencrypt SSL certificate has expired on https://www.notorm.com HOT 1
- How to get last inserted id HOT 2
- warning: adding embedded git repository: vendor/vrana/notorm
- PHP 8 compatibility HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from notorm.