我剛剛在 StackOverflow 上提的問題,求解答。
一個 Package 模型,有許多 Step 模型。 Step 的字段中有這樣兩條, tinyint 型 status 字段和 時間戳字段。 假設一個 Package A ,有下列 steps
假設一個 Package B ,有下列 steps
這樣 A 的最新 step status 是 2 , B 是 3.
然後,如何查詢出最新 step status 爲 2 的 packages ?
我嘗試在 package 模型中加入
public function steps()
{
return $this->hasMany('App\Step');
}
public function status()
{
return $this->steps()->latest()->limit(1);
}
然後這樣查詢
Package::whereHas('status', function ($q) {
$q->where('status', 2);
})->get();
但是卻不能得到期望的結果。
所謂不是期望的結果,指的是,如果, packages 表 裏面,衹有 B 這一個,我想查詢出最新 step status 爲 2 的 packages , B 最新是 3 所以應該結果爲空,但這樣查詢出結果并不是空,而是包含了 B 。
然後我試著換成
public function status()
{
return $this->hasOne('App\Step')->latest();
}
也還是一樣。
剛學 Laravel ,遇到這個問題很困惑,也查了很多 Google ,都沒有想要的答案。希望大家幫幫我,多謝!
用的 Laravel 5.3
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.