laravel Eloquent 三表联查怎么写
laravel Eloquent 三表联查怎么写,四表联查怎么写,多表关联等,我们以三表为例,多表自行扩展。
表:orders 主键:order_id 表里面有uid字段用来关联users表
表:users:主键uid 里面有info_id 关联user_info表
表:user_info:主键uid,主要存放用户邮箱,手机号码,联系地址等信息
需求:通过订单表里的uid获取去用户邮箱,手机号等信息
Model:Order
namespace App\Models; use Illuminate\Database\Eloquent\Model; class Order extends Model { protected $table = 'orders'; protected $primaryKey = 'order_id'; public function user() { reutrn $this->hasOne(User::class, 'uid', 'uid'); } }
Model:User
namespace App\Models; use Illuminate\Database\Eloquent\Model; class User extends Model { protected $table = 'users'; protected $primaryKey = 'uid'; public function user_info() { return $this->hasOne(UserInfo::class, 'uid', 'info_id'); } }
Model:UserInfo
namespace App\Models; use Illuminate\Database\Eloquent\Model; class UserInfo extends Model { protected $table = 'user_info'; }
代码:
$result = Order::with(['user', 'user.user_info'])->get(); foreach($result as $item) { if(!empty($item->user->user_info)){ $ret[]['email'] = $item->user->user_info->email; } } return $ret;
知识点:with支持渴望加载,可以用点来关联
2 thoughts on “laravel Eloquent 三表联查怎么写”
牛逼
大哥,你好。