Laravel pagination won't re-initialize MySQL variables
up vote
0
down vote
favorite
If I have this query:
select
id,
@product_rank := IF(@current_category = category_id, @product_rank + 1, 1) AS product_rank,
@current_category := category_id
from products
And create a query using Eloquent builder:
Products::from(DB::raw('
(select
id,
@product_rank := IF(@current_category = category_id, @product_rank + 1, 1) AS product_rank,
@current_category := category_id
from products) as q
'))->where('product_rank', '<=', 10)->paginate(5);
Because Laravel pagination wants to get the total count of all records, it executes an extra query like this:
select count(*) as aggregate from (
select
id,
@product_rank := IF(@current_category = category_id, @product_rank + 1, 1) AS product_rank,
@current_category := category_id
from products
) q where product_rank <= 10
So @current_category and @product_rank won't re-initialize and the main query returns wrong results.
I wonder if there is way to re-initialize both variables.
mysql laravel eloquent
add a comment |
up vote
0
down vote
favorite
If I have this query:
select
id,
@product_rank := IF(@current_category = category_id, @product_rank + 1, 1) AS product_rank,
@current_category := category_id
from products
And create a query using Eloquent builder:
Products::from(DB::raw('
(select
id,
@product_rank := IF(@current_category = category_id, @product_rank + 1, 1) AS product_rank,
@current_category := category_id
from products) as q
'))->where('product_rank', '<=', 10)->paginate(5);
Because Laravel pagination wants to get the total count of all records, it executes an extra query like this:
select count(*) as aggregate from (
select
id,
@product_rank := IF(@current_category = category_id, @product_rank + 1, 1) AS product_rank,
@current_category := category_id
from products
) q where product_rank <= 10
So @current_category and @product_rank won't re-initialize and the main query returns wrong results.
I wonder if there is way to re-initialize both variables.
mysql laravel eloquent
1
See e.g. MySql : Initialize mySql variable inside a query
– Solarflare
Nov 10 at 13:27
@Solarflare Very nice idea. It works.
– Omid
Nov 10 at 14:39
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
If I have this query:
select
id,
@product_rank := IF(@current_category = category_id, @product_rank + 1, 1) AS product_rank,
@current_category := category_id
from products
And create a query using Eloquent builder:
Products::from(DB::raw('
(select
id,
@product_rank := IF(@current_category = category_id, @product_rank + 1, 1) AS product_rank,
@current_category := category_id
from products) as q
'))->where('product_rank', '<=', 10)->paginate(5);
Because Laravel pagination wants to get the total count of all records, it executes an extra query like this:
select count(*) as aggregate from (
select
id,
@product_rank := IF(@current_category = category_id, @product_rank + 1, 1) AS product_rank,
@current_category := category_id
from products
) q where product_rank <= 10
So @current_category and @product_rank won't re-initialize and the main query returns wrong results.
I wonder if there is way to re-initialize both variables.
mysql laravel eloquent
If I have this query:
select
id,
@product_rank := IF(@current_category = category_id, @product_rank + 1, 1) AS product_rank,
@current_category := category_id
from products
And create a query using Eloquent builder:
Products::from(DB::raw('
(select
id,
@product_rank := IF(@current_category = category_id, @product_rank + 1, 1) AS product_rank,
@current_category := category_id
from products) as q
'))->where('product_rank', '<=', 10)->paginate(5);
Because Laravel pagination wants to get the total count of all records, it executes an extra query like this:
select count(*) as aggregate from (
select
id,
@product_rank := IF(@current_category = category_id, @product_rank + 1, 1) AS product_rank,
@current_category := category_id
from products
) q where product_rank <= 10
So @current_category and @product_rank won't re-initialize and the main query returns wrong results.
I wonder if there is way to re-initialize both variables.
mysql laravel eloquent
mysql laravel eloquent
asked Nov 10 at 12:07
Omid
1,83353146
1,83353146
1
See e.g. MySql : Initialize mySql variable inside a query
– Solarflare
Nov 10 at 13:27
@Solarflare Very nice idea. It works.
– Omid
Nov 10 at 14:39
add a comment |
1
See e.g. MySql : Initialize mySql variable inside a query
– Solarflare
Nov 10 at 13:27
@Solarflare Very nice idea. It works.
– Omid
Nov 10 at 14:39
1
1
See e.g. MySql : Initialize mySql variable inside a query
– Solarflare
Nov 10 at 13:27
See e.g. MySql : Initialize mySql variable inside a query
– Solarflare
Nov 10 at 13:27
@Solarflare Very nice idea. It works.
– Omid
Nov 10 at 14:39
@Solarflare Very nice idea. It works.
– Omid
Nov 10 at 14:39
add a comment |
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53238784%2flaravel-pagination-wont-re-initialize-mysql-variables%23new-answer', 'question_page');
}
);
Post as a guest
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
1
See e.g. MySql : Initialize mySql variable inside a query
– Solarflare
Nov 10 at 13:27
@Solarflare Very nice idea. It works.
– Omid
Nov 10 at 14:39