我有一段 sql 是
select *, (select top 1 name from imglist where id=tableA.id order by cover desc) as picname FROM tableA where ...
想轉成 laravel 中的 model 呼叫
如:
$data_result = tableA_model::where(function($query) use ($input) {
$query->where('city', '=', $input['city'] );
}
怎麼在 laravel 中達到我想要的目的:
取出 tableA 的 item 並一同取出在 imglist 中的 item 的第一張照片存成 picname 跟 tableA 一起回傳?
我知道如果用 DB:select可以達到,只是想問 model 能做這樣的組合嗎?
用關聯吧
https://laravel.com/docs/5.8/eloquent-relationships
原本tableA_model
另外建立一個imglist_model
在tableA_model 建立hasOne關聯
建立關聯
public function imglist() {
return $this->hasOne('Path路徑\model名稱', 'id', 'imglist_id');
}
controller or repository使用
$data_result = tableA_model::with([
'imglist' => function($q){
return $q-> orderBy('cover', 'desc')
}
])->first();