gpt4 book ai didi

model - 在 laravel 5.3 中使用 Eloquent 连接两个模型

转载 作者:行者123 更新时间:2023-12-04 03:16:48 25 4
gpt4 key购买 nike

我有两张 table 。

用户 表:

 id (integer)
name (string)
email (string)
phone (string)
codeMeli (string)

user_admin 表:
userId (integer)
adminId (integer)

Note : adminid 字段保留作为另一个用户的管理员的用户 ID。一个用户可以是多个用户的管理员,或者一个用户可能有多个管理员。例如:
| id | name | email | phone | codeMeli |            | userid | adminid |
---- ------ ------- ------- ---------- -------- ---------
| 5 | mike | m@yaho| 12345 | 12345678 | | 6 | 5 |
| 6 | sara | s@yaho| 54321 | 87654321 | | 7 | 5 |
| 7 | joe | j@yaho| 56421 | 65875234 | | 7 | 8 |
| 8 | sag | s@yaho| 57635 | 64616843 |

我使用 OueryBuilder 尝试了这个查询并且运行良好:
Users::select('id','name','email','codeMeli','phone')
->join('user_admin','user_admin.userid','=','users.id')
->whereRaw("name LIKE '%".$name."%' and email LIKE '%".$email."%' and codeMeli LIKE '%".$codeMeli."%' and phone LIKE '%".$phone."%' and user_admin.adminid=".$CurrentUSerID)
->get();

但我想使用 Eloquent。

这是我的 用户 模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;

class Users extends Model
{
protected $table = 'users';
public $timestamps = false;
protected $fillable = ['name','phone','email','codeMeli','admin'];

public function userAdmin()
{
return $this->belongsToMany('App\UserAdmin','id','userid');
}
}

user_admin 模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;

class UserAdmin extends Model
{
protected $table = 'user_admin';
public $timestamps = false;
protected $fillable = ['userid','adminid'];

public function users()
{
return $this->belongsToMany('App\Users','id','adminid');
}
}

我应该如何使用 Eloquent 编写此查询?我是否在模型中以正确的方法使用关系?我认为我的模型应该被编辑,但我不知道如何。
谢谢你的帮助。

最佳答案

您可以重新制作型号 作为' 管理员 ' 与 相关用户 表和使用关系是这样的:

用户 模型:

class Users extends Model
{
protected $table = 'users';
public $timestamps = false;
protected $fillable = ['name','phone','email','codeMeli','admin'];


public function userAdmin()
{
return $this->belongsToMany('App\Admin', 'user_admin', 'adminid', 'userid');
}
}

管理员 模型:
class Admin extends Model
{
protected $table = 'users';
public $timestamps = false;
protected $fillable = ['name','phone','email','codeMeli','admin'];
public function userAdmin()
{
return $this->belongsToMany('App\Users', 'user_admin', 'userid', 'adminid');
}
}

并在您的 Controller :
$user = Users::find($CurrentUSerID)->userAdmin()->get();

看看 https://laravel.com/docs/5.3/eloquent-relationships#many-to-many

关于model - 在 laravel 5.3 中使用 Eloquent 连接两个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40304910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com