I have 3 tables.
authors(id, name)
audio_cat(id, cat_id(foreign key to categories), file_id (fr.key to files), author_id(fr.key to authors table), audio_type)
files(id, type, path)
i want to fetch authors and files(which belongs to specific author). for example, one author may has 3 files, another one has 1, so on.. when i try to fetch specific author's files, it returns all files, instead of files which belongs to this author. here's code in my controller
$authors = [];
$i = 0;
foreach($items->all() as $author)
{
$authors[$i] = $author;
$authors[$i]['files'] = $author
->join('audio_cat', 'authors.id', '=', 'audio_cat.author_id')
->join('files', 'audio_cat.file_id', '=', 'files.id')
->select('audio_cat.cat_id', 'audio_cat.author_id', 'audio_cat.file_id','files.id', 'files.name')
->get();
$i++;
}
dd($authors);
dump shows this,I have 2 authors, and they have both have 2 audio files
array:2 [▼
0 => Author {#465 ▶}
1 => Author {#466 ▶}
]
for example first author
0 => Author {#465 ▼
#fillable: array:4 [▼
0 => "name"
1 => "lang"
2 => "lang_id"
3 => "user_id"
]
#attributes: array:8 [▼
"id" => 26
"user_id" => 2
"name" => "bar"
"lang_id" => 26
"lang" => "en"
"created_at" => "2016-09-27 09:12:03"
"updated_at" => "2016-09-27 09:12:08"
"files" => Collection {#471 ▼
#items: array:4 [▶]
}
]
}
files key has 4 arrays in it, it return all 4 files, not that 2 files which belong to this specific author
"files" => Collection {#471 ▼
#items: array:4 [▼
0 => Author {#472 ▼
#fillable: array:4 [▶]
#table: "authors"
#connection: null
#primaryKey: "id"
#keyType: "int"
#perPage: 15
+incrementing: true
+timestamps: true
#attributes: array:5 [▶]
#original: array:5 [▶]
}
1 => Author {#473 ▶}
2 => Author {#474 ▶}
3 => Author {#475 ▶}
]
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire