簡體   English   中英

如何從 Laravel 關系中獲取數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM