Comments (4)
@sptdigital Thanks for the follow-up.
I'm not sure whether it's a problem with Compoships or a recent change in Eloquent relationships behavior. I'd suggest to remove the ->with('pickupTimes')
from the definition of the relationship and move it to the part where you retrieve the data.
from compoships.
Can you please share a code example of querying A and it's children relations A.B.C? I also suggest to check the query log (via Laravel Debugbar or ...) to get an idea of the SQL queries.
from compoships.
Sure @topclaudy
The below is the relation from what I referred as Model A (\App\Contract), it hasMany \App\PickupPoint (model B) joining on the tender_ref_no column. I am trying to eager load all PickupTime (model C) for each PickupPoint.
When I remove the ->with('pickupTimes')
I am getting the relevant PickupPoint(s) for the Contract, (2 or them) as soon as I am trying to eagerload PickupTimes it fetches all PickupPoint for all Contracts... resulting in a massive query
/**
* @Relation
*/
public function pickupPoints()
{
return $this->hasMany(\App\PickupPoint::class, 'tender_ref_no', 'tender_ref_no')->with('pickupTimes');
}
The queries running
select * from `contracts`.`contracts` where `tender_ref_no` = ? and `stat_ind` not in (?, ?) and `contracts`.`contracts`.`deleted_at` is null limit 1
Bindings:
array:3 [▼
0 => "G1234"
1 => 50
2 => 99
]
"select * from `schools`.`pickup_points` where `schools`.`pickup_points`.`tender_ref_no` in (0)"
Bindings: somehow ending up with (0), should bind to G1234,
[]
then basically thousands of lines like this with huge bindings array with all Contract(s) and PickupPoint(s) IDs
select * from `schools`.`pickup_times` where ((`schools`.`pickup_times`.`tender_ref_no` = ? and `schools`.`pickup_times`.`pickup_pt_no` = ?) or (`schools`.`pickup_times`.`tender_ref_no` = ? and `schools`.`pickup_times`.`pickup_pt_no` = ?) or (`schools`.`pickup_times`.`tender_ref_no` = ? and `schools`.`pickup_times`.`pickup_pt_no` = ?) or (`schools`.`pickup_times`.`tender_ref_no` = ? and `schools`.`pickup_times`.`pickup_pt_no` = ?) or .........
Thanks again
from compoships.
You shouldn't use with
inside a relation, just try->with('pickupPoints.pickupTimes')
on main query, it has nested relations
from compoships.
Related Issues (20)
- With() is not working HOT 14
- Using `OR` instead of `AND` in the association HOT 6
- HasOne results to an error HOT 7
- Invalid input syntax for type uuid HOT 1
- Support more than nth columns HOT 1
- Relationship on string values HOT 1
- Doesn't Work In Laravel ^8.40 HOT 4
- Latest update (2.1.3) does not seem to allow DB:raw() for me as examples have shown HOT 1
- stripos() expects parameter 1 to be string, array given HOT 2
- is there gonna be Laravel 10.x support? HOT 3
- Future HOT 7
- Version conflict when test with Laravel 10 HOT 8
- Factory relationships support. Error: [Illegal offset type] HOT 2
- Possible/How to support sync, attach, detach? HOT 1
- Where not working HOT 1
- How to use that package in laravel 10 version ?
- Call to undefined method Awobaz\Compoships\Database\Query\Builder::getDb() HOT 1
- Error when using a column for which the model specifies cast to Enum HOT 1
- Integration with Eloquent Eager Limit
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 compoships.