laravel Eloquent 三表联查怎么写

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 三表联查怎么写

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据