Alnis Posted November 5, 2014 Report Share Posted November 5, 2014 (edited) Ir tabulas: 1. goods (id, name, category_id); 2. categories (id, name) 3. field_binding (id, category_id, field_id) 4. fields (id, name) 5. field_values (id, field_id, good_id) Man ir sekojoši relations: Class Good extends Eloquent{ public function category(){ return $this->belongsTo(‘category’); } public function fieldValues(){ return $this->hasMany(‘FieldValues’) } } Class Category extends Eloquent{ public function fields(){ return $this->belongsToMany(‘Fields’, ‘field_binding’, ‘category_id’, field_id); } } Class Field extends Eloquent{ public function fieldValues(){ return $this->hasMany(‘FieldValues’, ‘field_id’); } } Class FieldValues extends Eloquent{ public function fieldValues(){ return $this->belongsTo(‘good’); } } Pielotojums: 1. return Good::with(‘category.fields.fieldValues’)->get(); te atgriež sarakstu, kur parādās arī tādas fieldValues, kuras nav saistītas ar good. 2. return Good::with(‘fieldValues’)->get(); Te atgriež sarakstu ar visām field values, bet man nevajag visas, man vajag tikai to fieldu, kuri ir piesiastīti kategorijai, kas piesaistīta goods, values 3. return Good::with(array(‘category.fields.fieldValues’=>function($query){ $query->where(‘goods.id’,’=’,’fieldValues.id’) }))->get(); Bet šis fragments, protams, nestrādā: ‘goods.id’,’=’,’fieldValues.id’. Tātad man vajag izvadīt tos fieldu values, kas attiecās uz konkrēto good un kuru fieldi ir piesaistīti konkrētajai Category, kas piesaistīta goods. Idejas? Paldies! p.s. pa vidu iespējams ir sintakses kļudas, bet tam šobrīd nav nozīmes. Edited November 6, 2014 by Alnis Quote Link to comment Share on other sites More sharing options...
Kemito Posted November 6, 2014 Report Share Posted November 6, 2014 $query->where(‘advert.id’,’=’,’fieldValues.id’) Šajā daļā Tu ņem tabulas vai relācijas "advert" `id`, bet es nespēju ieraudzīt, kur tu viņu pielasītu ar "with" , vai ko tādu. Quote Link to comment Share on other sites More sharing options...
Alnis Posted November 6, 2014 Author Report Share Posted November 6, 2014 Kemito, drukas kļuda bija ieviesusies, biju domājis: $query->where(‘goods.id’,’=’,’fieldValues.id’) Goods tabula man ir pati pirmā, kurai pašā sākumā es lieku klāt relācijas (relāciju ķēdi). Jā, man bija doma tajā where kaut kā uzrādīt tabulas 'goods' nosaukumu, kas acīmredzot tādā veidā, kā es daru, nav iespējams. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.