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 三表联查怎么写”
牛逼
大哥,你好。