Laravel Eloquent:在Eloquent中获取联接表的ID字段

埃德温·克劳斯(Edwin Krause)

我需要获取第二张表的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();
        }   
    }
}
埃德温·克劳斯(Edwin Krause)

有时解决方案比您想像的要容易。因此,基本上我所做的与在标准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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Laravel和Eloquent中获取2个以上联接表的数据

来自分类Dev

Laravel Eloquent在联接表上的位置

来自分类Dev

如何使用Laravel Eloquent从多个表中获取数据

来自分类Dev

Laravel Eloquent 获取与数据透视表中的值匹配的关系

来自分类Dev

如何将额外的表联接到一个belongsToMany集合(在Laravel Eloquent中)

来自分类Dev

使用关系选择 Laravel Eloquent 中的字段

来自分类Dev

在Laravel Eloquent中使用联接获取多个记录

来自分类Dev

Laravel Eloquent左联接查询

来自分类Dev

使用Laravel和Eloquent从表中全选

来自分类Dev

在Laravel Eloquent中获取和过滤关系

来自分类Dev

带有别名的联接中的Laravel Eloquent子查询

来自分类Dev

Laravel 5.5 - Eloquent - 从带有“datetime(6)”字段的 MySQL 表中检索“微秒”

来自分类Dev

Laravel Eloquent:返回数组键作为字段ID

来自分类Dev

Laravel:使用Eloquent属于,从两个表中获取数据吗?

来自分类Dev

如何使用laravel eloquent从其他表中获取和显示数据

来自分类Dev

Laravel Eloquent:获取相关表的值而不是外键

来自分类Dev

Laravel 3 表 Eloquent:关系

来自分类Dev

Laravel Eloquent 连接表关系

来自分类Dev

Laravel Eloquent - 数据透视表

来自分类Dev

使用Laravel Eloquent的with()函数和内部联接

来自分类Dev

Laravel Eloquent在联接中使用WHERE代替AND

来自分类Dev

从Laravel Eloquent获取特定的列

来自分类Dev

Laravel-使用Eloquent获取没有ID的belongsTo关系

来自分类Dev

Laravel Eloquent:仅在模型类中重命名字段

来自分类Dev

Laravel Eloquent:仅在模型类中重命名字段

来自分类Dev

在Laravel Eloquent中,将空记录插入表中

来自分类Dev

Laravel Eloquent firstOrFail返回表中的所有记录

来自分类Dev

Laravel Eloquent firstOrFail返回表中的所有记录

来自分类Dev

如何在laravel eloquent中查询三个表

Related 相关文章

  1. 1

    在Laravel和Eloquent中获取2个以上联接表的数据

  2. 2

    Laravel Eloquent在联接表上的位置

  3. 3

    如何使用Laravel Eloquent从多个表中获取数据

  4. 4

    Laravel Eloquent 获取与数据透视表中的值匹配的关系

  5. 5

    如何将额外的表联接到一个belongsToMany集合(在Laravel Eloquent中)

  6. 6

    使用关系选择 Laravel Eloquent 中的字段

  7. 7

    在Laravel Eloquent中使用联接获取多个记录

  8. 8

    Laravel Eloquent左联接查询

  9. 9

    使用Laravel和Eloquent从表中全选

  10. 10

    在Laravel Eloquent中获取和过滤关系

  11. 11

    带有别名的联接中的Laravel Eloquent子查询

  12. 12

    Laravel 5.5 - Eloquent - 从带有“datetime(6)”字段的 MySQL 表中检索“微秒”

  13. 13

    Laravel Eloquent:返回数组键作为字段ID

  14. 14

    Laravel:使用Eloquent属于,从两个表中获取数据吗?

  15. 15

    如何使用laravel eloquent从其他表中获取和显示数据

  16. 16

    Laravel Eloquent:获取相关表的值而不是外键

  17. 17

    Laravel 3 表 Eloquent:关系

  18. 18

    Laravel Eloquent 连接表关系

  19. 19

    Laravel Eloquent - 数据透视表

  20. 20

    使用Laravel Eloquent的with()函数和内部联接

  21. 21

    Laravel Eloquent在联接中使用WHERE代替AND

  22. 22

    从Laravel Eloquent获取特定的列

  23. 23

    Laravel-使用Eloquent获取没有ID的belongsTo关系

  24. 24

    Laravel Eloquent:仅在模型类中重命名字段

  25. 25

    Laravel Eloquent:仅在模型类中重命名字段

  26. 26

    在Laravel Eloquent中,将空记录插入表中

  27. 27

    Laravel Eloquent firstOrFail返回表中的所有记录

  28. 28

    Laravel Eloquent firstOrFail返回表中的所有记录

  29. 29

    如何在laravel eloquent中查询三个表

热门标签

归档