2
我需要獲得第二個表的ID。我無法避免使用INNER JOIN,因爲我必須按第二個表中的列對結果進行排序。Laravel Eloquent:在Eloquent中獲得連接表的ID字段
這裏是我的2臺
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
}
我需要雙方的IDS表格+兩個表格中的所有值總共約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();
}
}
}
這兒的一部分
可以顯示在你的模型是什麼關係? – 2015-01-21 21:27:10