【发布时间】:2019-08-05 09:54:50
【问题描述】:
我有一个相当复杂的问题。
首先,这是我的模型:
1) 标签Adybooks
<?php namespace App; use App\Livres; use Illuminate\Database\Eloquent\Model; use Auth; class tagsAdybooks extends Model {
public function getid()
{
return $this->id;
}
/**
* Protège une table
* @var string
*/
protected $table = 'tags_adybooks';
/**
* Permet de voir quel champs sont modifiable
* @var array
*/
protected $fillable = [
'titre_fr','titre_en','slug_fr','slug_en','numero','principal','tags_adybooks_id'];
/**
*Annule la fonction create et update automatique
* @var bool
*/
public $timestamps = false;
/*
* Liaison livres et Tags
*/
public function livres(){
return $this->belongsToMany(Livres::class,'livres_has_tags_adybooks');
}
public function livresTags(){
return $this->belongsToMany(Livres::class,'livres_has_tags_adybooks')->where('nouveaute','=',1)->where('actif','=',1)->whereHas('disponible',function ($query){
$query->where('id','=',1);
})->orderBy('id','desc');
}
public function livresOffice(){
return $this->belongsToMany(Livres::class,'livres_has_tags_adybooks')->where('date_office','desc')->get()->groupBy('date_office');
}
public function children() {
return $this->hasMany( tagsAdybooks::class,'tags_adybooks_id','id')->orderBy('titre_'.\App::getLocale(),'asc')->has('livres');
}
public function parent() {
return $this->belongsTo(tagsAdybooks::class,'tags_adybooks_id');
}
2) 利弗斯:
<?php namespace App; use Illuminate\Database\Eloquent\Model; use Auth;use Cart; use Carbon\Carbon; class Livres extends Model{
/**
* Protège une table
* @var string
*/
protected $table = 'livres';
/**
* Permet de voir quel champs sont modifiable
* @var array
*/
protected $fillable = [
'titre','sous_titre','description','photo','apercu','video','disponibilite','prix_ttc','prix_promo','langue',
'isbn','ean_13','date_parution','date_office','format','prix_lancement','faconnage','nbre_page','typesID','collection','clil','nouveaute'];
/**
*Annule la fonction create et update automatique
* @var bool
*/
public $timestamps = false;
protected $casts = [
'clil' => 'array',
];
/*
* Liaison like et livres :
*/
public function likes()
{
return $this->morphToMany(User::class, 'like')->whereDeletedAt(null);
}
public function tagAdybooks(){
return $this->belongsToMany(tagsAdybooks::class,'livres_has_tags_adybooks');
}
我希望他们选择所有主要的有书的tagsadybooks 或所有主要的tagsadybooks 并且他们的孩子有书
为此,我尝试了一个联合:$tags=tagsAdybooks:: join('livres_has_tags_adybooks', 'tags_adybooks.id', '=', 'livres_has_tags_adybooks.tags_adybooks_id')
->join('livres', 'livres_has_tags_adybooks.livres_id', '=', 'livres.id')
->select( 'tags_adybooks.*')->orderBy('titre_'.App::getLocale(),'asc')->where(function($q){
$q->whereHas('livres');$q->orWhereHas('children');})->get();
或其他请求:$tags=tagsAdybooks::where('principal','=',1)->orderBy('titre_'.App::getLocale(),'asc')->whereHas('children')->has('livres')->get();
不幸的是,我得到了包含书籍的主要 tagsadybooks 或所有 tagsadybooks 但不是主要的。请给我一个线索好吗?
我想了解我的错误在哪里?
【问题讨论】:
标签: sql laravel laravel-5 eloquent