[英]How to get data from Laravel relation
我有 2 個模型:publictxt 和 Pulicetxtrecive
公共文本 model:
class Publictxt extends Model
{
protected $fillable=['sender','reciver','description','useridseen'];
public function Publictxtrecives()
{
return $this->hasMany(Pulicetxtrecive::class,'publictxt_id', 'id');
}
}
公共電話號碼 model:
protected $fillable=['publictxt_id','user_id','seen'];
public function publictxts()
{
return $this->belongsTo(Publictxt::class);
}
我想從 Publictxt 中獲取在 Pulicetxtrecive 中可用的值。 當記錄存儲在 Publictxt 中時,用戶在查看后在 Pulicetxtrecive 中注冊。
$pulictxtcount=Publictxt::where('reciver',Auth::user()->shift)->orwhere('reciver',1)->with('Publictxtrecives')->whereHas('Publictxtrecives',function($q){$q->where('seen', '=', 0);})->count();
此代碼不起作用。
您的數據庫結構存在一些沖突。
您說過當用戶看到一封信時,將創建Publictxtrecives
。 這意味着如果一個Publictxt
有一個Publictxtrecives
肯定已經被看到了。 但是在Publictxtrecives
表中有一個seen
的列。 你應該選擇一個。 但無論如何作為這種結構:
$pulictxtcount=Publictxt::where(
function($query){
$query->where('reciver',Auth::user()
->shift)->orwhere('reciver',1);
})
->Where(function($query)
{
$query->whereHas('Publictxtrecives',
function($q){$q->where('seen',1);
}
)->orWhereDoesntHave('Publictxtrecives');
})
->with('Publictxtrecives');
$pulictxtcount = Publictxt::with([
'Publictxtrecives' => function($query){
$query->where('seen', 0);
}
])
->where('reciver', Auth::user()->shift)
->orwhere('reciver', 1)
->get();
我解決了這個問題:
$pulictxtcount = Publictxt::where(function($q){$q->where('reciver',Auth::user()->shift)->orwhere('reciver',1);})->whereDoesntHave ('Publictxtrecives', function($q){$q->where('user_id', Auth::user()->id); })->count();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.