[英]Laravel Eloquent: getting id field of joined tables in Eloquent
我需要獲取第二張表的ID。 我無法避免使用INNER JOIN,因為我必須按第二個表中的一列對結果進行排序。
這是我的兩張桌子
events
id
name
....
date
...
myevents
id
meeventID
meresults
....
為了得到我想要的結果,我正在使用以下
$finishedRaces = Myevent::where('meuserID', $user->id)
->join('events', 'myevents.meeventID', '=', 'events.id')
->whereRaw("`events`.`date` >= '$signupday' AND `events`.`date` <= '$today'")
->orderBy('events.date','desc')->get();
如果我做
foreach($finishedRaces as $race){
echo $race->id // this returns the id of the table events
}
我需要兩個表的ID +兩個表中的所有值,總共約20個值。 關於如何做到這一點的任何想法? 我真的很想避免使用->select("columnname as someothername, ...")
除非我只能定義2個id列(如果可以的話)。
一些要求增加
這里相關的模型+功能
class Myevent extends Model{
public function sportevent()
{
return $this->hasOne('Sportevent','id','meeventID');
}
public function athlete()
{
return $this->hasOne('User','id','meuserID');
}
}
這是Sportevent模型的一部分
class Sportevent extends Model{
protected $table = 'events';
// doesn't have a direct relation to Myevent model
}
這里是具有相關功能的用戶模型
class User extends Model {
public function myeventbydate($date){
return $this->hasOne('Myevent','meuserID','id')
->join('events', 'myevents.meeventID', '=', 'events.id')
->where('events.date',$date)->get();
}
public function myevents($filter=""){
if($filter==""){
return Myevent::where('meuserID', $this->id)
->join('events', 'myevents.meeventID', '=', 'events.id')
->orderBy('events.date', 'desc')->first();
}else{
return Myevent::where('meuserID', $this->id)
->join('events', 'myevents.meeventID', '=', 'events.id')
->where('events.country', $filter)
->orderBy('events.date', 'desc')->get();
}
}
}
有時解決方案比您想像的要容易。 因此,基本上,我所做的工作與在標准SQL查詢中所做的相同: SELECT *, myevents.id AS me_id FROM ... '
然后看起來像這樣:
$finishedRaces = Myevent::where('meuserID', $user->id)
->join('events', 'myevents.meeventID', '=', 'events.id')
->whereRaw("`events`.`date` >= '$signupday' AND `events`.`date` <= '$today'")
->select('*','myevents.id as me_id')
->orderBy('events.date','desc')->get();
我擔心我必須在->select
語句中指定每一列,但是這樣做很好。
我的ID現在可以通過
$race->me_id; // id of table myevents
$rade->id // id of table events
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.