是否存在使用select和join子句检索名称的有效方法?我有一个Note,NoteType和NoteStatus模型。 Note模型中有类型和状态字段,它们将存储为整数(代表其各自模型的ID)。 NoteType和NoteStatus模型具有ID和名称字段。
foreach($notes as $note)
{
$type=NoteType::where('id',$note->type)->first();
$note->type=$type->name;
$status=NoteStatus::where('id',$note->status)->first();
$note->status=$status->name;
}
答案 0 :(得分:1)
在模型之间建立关系将是最好的方法,因为您无需在每次需要调用联接时都重新发明轮子。从长远来看,它将节省您的代码。
有关此的更多信息:
Laravel Eloquent Relationships
如果要手动执行此操作,则与在原始SQL中运行查询相同:
$note = Note::join('NoteType','Note.NoteType_id','NoteType.id')
->select('Note.*','NoteType.Name as NoteName')
->first();
现在您可以从$ note中获取所有信息
Note id = $note->id
NoteType Name = $note->NoteName
显然可以根据您的代码进行调整,但这应该可以帮助您建立足够的知识以进行实践。
更多信息可以在这里找到:
答案 1 :(得分:1)
假设您的型号名称为Note.php
假设您的notes
表中有note_status_id
和note_type_id
外键
在主模型Note.php
中添加关系
public function status()
{
return $this->belongsTo(NoteStatus::class);
}
public function notes()
{
return $this->belongsTo(NoteType::class);
}
您可以检索具有类似关系的数据
Note::with('status','notes')
->get()
有关laravel关系Laravel Eloquent: Relationships的更多信息