gpt4 book ai didi

php - Laravel Eloquent : getting id field of joined tables in Eloquent

转载 作者:行者123 更新时间:2023-11-29 01:28:27 33 4
gpt4 key购买 nike

我需要获取第二个表的 ID。我无法避免使用 INNER JOIN,因为我必须按第二个表中的列对结果进行排序。

这是我的两张 table

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

关于php - Laravel Eloquent : getting id field of joined tables in Eloquent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28062308/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com