请问下这种查询如何写

查询代码

Order::with("log")->first();

Order模型中 log方法

public function log()
    {
          return $this->
          hasMany(Log::class,'order_id',')
    }

疑问:我的log表中有userId字段,想通过一个自定义方法通过log表中的userId查询userinfo带到log中一起返回到上面的Order信息查询条件中,我该如何写log方法

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
随波逐流
最佳答案

按照你的描述, 逻辑关系应该是

order (一)-> log(多) -> user(一), 属于典型的 一对多 & 多对一

先定义OrderLog的关系模型

class Order extends Model
{
    public function logs() {
        $this-> hasMany(Log::class,'order_id','id');
    }
}

在定义 LogUser 的关系模型

class Log extends Model
{
    public function logs() {
        $this-> hasOne(User::class,'id','user_id');
    }
}

使用

// 使用`点`语法
Order::with("logs.user")->first();
2年前 评论
讨论数量: 6

order::with('log.user')

2年前 评论
canbez 2年前
随波逐流

按照你的描述, 逻辑关系应该是

order (一)-> log(多) -> user(一), 属于典型的 一对多 & 多对一

先定义OrderLog的关系模型

class Order extends Model
{
    public function logs() {
        $this-> hasMany(Log::class,'order_id','id');
    }
}

在定义 LogUser 的关系模型

class Log extends Model
{
    public function logs() {
        $this-> hasOne(User::class,'id','user_id');
    }
}

使用

// 使用`点`语法
Order::with("logs.user")->first();
2年前 评论
陈先生
$model
  ->with(['relation1','relation2'])
  ->first();
2年前 评论

这个就是远程关系了 模型关联《Laravel 8 中文文档》 吧。

2年前 评论
// Model Order 
public function log()
{
      return $this->
      hasMany(Log::class,'order_id')->with('user')
}
2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!