You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel使用Inner Join关联表获取用户邮箱并发送邮件的实现问题

实现方案

推荐方式:基于Eloquent模型关联(ORM自动处理关联查询)

这是Laravel框架下的标准实现方式,无需手动编写JOIN语句,ORM会自动处理关联逻辑:

  • 第一步:在Shipment模型中定义和User模型的关联关系
// app/Models/Shipment.php 文件中新增关联方法
public function user()
{
    return $this->belongsTo(User::class, 'user_id');
}
  • 第二步:修改原有发邮件的逻辑,通过关联属性获取用户邮箱
// add shipment to DB
$newShipment =  Shipment::create([
      'user_id' => $request->mailBoxNo,
      'vendor'=> $request->vendor,
      'weight'=> $request->weight,
      'transitStatus'=> '1',
      'isInvoiceReady'=>'0',
      'trackingNumber'=> $trackingNumber, 
  ]); 

// 通过关联属性直接获取对应用户的邮箱
Mail::to($newShipment->user->email)->send(new RecievedShipment(auth()->user(), $newShipment));

备选方式:手动编写INNER JOIN语句查询

如果你需要显式写JOIN语句实现,可以用以下代码:

// 新增 shipment 后执行关联查询
$userEmail = User::join('shipments', 'users.id', '=', 'shipments.user_id')
    ->where('shipments.id', $newShipment->id)
    ->value('users.email');

Mail::to($userEmail)->send(new RecievedShipment(auth()->user(), $newShipment));

注意:请提前确认User模型存储邮箱的字段名是否为email,如果字段名不同请对应修改取值逻辑。

内容的提问来源于stack exchange,提问作者Paul Gordon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:06:03