Il y a trois tables dans mon système:Comment obtenir une seule table via Laravel Eloquent
- étudiants
- Articles
- catégories
Un étudiant peut écrire de nombreux articles et un article appartient à un seul étudiant. Et un article ne peut avoir qu'une seule catégorie.
Article Modèle
class Articles extends Model
{
protected $fillable = ['id','title', 'body', 'students_id', 'created_at', 'updated_at'];
protected $table = 'articles';
public function students(){
return $this->belongsTo('App\Students');
}
public function categories(){
return $this->belongsTo('App\Categories');
}
}
J'ai créé le code ci-dessus, parce que je devais obtenir une liste d'articles avec qui écrit par cet article avec le nom de la catégorie.
Pour cela j'ai utilisé $article_list = Articles::get();
dans le contrôleur, et cela fonctionne parfaitement.
Encore une fois, j'avais besoin d'obtenir la liste des articles (cette fois je n'ai pas besoin du nom de l'étudiant et des noms de catégories, la sortie de la table article est plus que suffisante).
Mais si j'utilise $article_list = Articles::get();
, il sort également la table d'articles en joignant la catégorie et la table des étudiants.
Existe-t-il un moyen d'obtenir uniquement la table article en utilisant Eloquent?
Vous pouvez utiliser le générateur de requête pour cela –
Que voulez-vous dire par * il sort la table d'article en joignant la catégorie et les étudiants *? Etes-vous sûr que les données de l'étudiant et de la catégorie sont réellement * id * dans le résultat obtenu ou sont-elles simplement des objets relationnels sur le modèle éloquent? – lesssugar
@lesssugar Oui. J'obtiens le même résultat en utilisant '$ articles = Articles :: with ('students') -> avec ('categories') -> get();' et '$ articles = Articles :: get();'. J'ai confus à cause de cela. Je veux dire après foaeach, je peux accéder au nom de la catégorie en utilisant '{{$ article ['categories'] ['name']}}'. Donc, je sais qu'ils ont été rejoints .... –