【发布时间】:2023-03-16 13:09:01
【问题描述】:
我有桌子
threads
- id
replies
- id
- repliable_id
- repliable_type
我想在 Thread 中添加另一列,即最近回复的 id。
Thread::where('id',1)->withRecentReply()->get()
以及以下查询范围
public function scopeWithRecentReply() {
return $query->addSelect([
'recent_reply_id' => Reply::select('id')
->whereHasMorph('repliable', ['App\Thread'], function ($q) {
$q->where('repliable_id', '=', 'threads.id');
})->latest('created_at')
->take(1),
]);
}
我也试过
public function scopeWithRecentReply() {
return $query->addSelect([
'recent_reply_id' => Reply::select('id')
->where('repliable_id', '=', 'threads.id')
->latest('created_at')
->take(1),
]);
}
但在这两种情况下
recent_reply_id => null
如果我输入一个整数而不是 threads.id,它会起作用并且 recent_reply_id 不为空 例如
public function scopeWithRecentReply() {
return $query->addSelect([
'recent_reply_id' => Reply::select('id')
->whereHasMorph('repliable', ['App\Thread'], function ($q) {
$q->where('repliable_id', '=', 1);
})->latest('created_at')
->take(1),
]);
}
我的问题是
有没有办法使用相应的 threads.id 获取 recent_reply_id ?
【问题讨论】:
标签: laravel eloquent eloquent-relationship