php - 如何正确使用 laravel 查询生成器构建查询?
问题描述
我有两个模型:用户和消息。它们以一对多的关系绑定在一起(一个用户可以发送许多消息)。表用户有一个列“电子邮件”,表消息有一个列“r_email”(这是同一个字段)。所以我需要像“SELECT * FROM Users, Message WHERE Users.email = Message.r_email”这样的查询。我该怎么做?
我试过这样的事情:
$messages = App\Message::with('users')->where('users.email', '=', 'messages.r_email')->get();
但它给了我错误。什么是问题?
模型以这种方式绑定:
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
public function messages()
{
return $this->hasMany(Message::class);
}
}
消息模型的代码:
class Message extends Model
{
protected $fillable = ['message', 'r_email'];
public function user()
{
return $this->belongsTo(User::class);
}
}
解决方案
尝试
$messages = App\Message::with('users')->whereRaw('users.email = messages.r_email')->get();
推荐阅读
- c# - Apache Ignite:无法将数据插入持久缓存,因为拓扑版本的亲和性未初始化
- html - 如何在导出的 const 中添加 html 元素
- php - 如何跨多个数组使用 str_replace 构造字符串排列?
- google-apps-script - 我的 Google 表格中的 Google Apps 脚本是否必须在表格每次打开时请求我的数据?
- .net - 如何使用 PowerShell 将数字转换为单词(货币格式)?
- reactjs - 无法从 flatList 中删除项目在 Api 的 react-native 中,
- reactjs - 修复 CORS 错误问题 axois.get MissingAllowOriginHeader
- powerquery - 如何从导航窗格中获取表格并合并
- reflection - Mono.Cecil AddInterfaceImplementation 等效?
- r - parse_time() 的奇怪行为