如何从Laravel关系中获取数据

c8ib6hqw  于 2022-12-30  发布在  其他
关注(0)|答案(2)|浏览(115)

我有2个模型:公共文本和公共文本
公共文本模型:

class Publictxt extends Model
{
    protected $fillable=['sender','reciver','description','useridseen'];

    public function Publictxtrecives()
    {
        return $this->hasMany(Pulicetxtrecive::class,'publictxt_id', 'id');
    }
}

Pulicetextrecive型号:

protected $fillable=['publictxt_id','user_id','seen'];

public function publictxts()
{
    return $this->belongsTo(Publictxt::class);
}

我想得到 从Pulicetxtrecive中可用的Publictxt中获取。当记录存储在Publictxt中时,用户在查看后会在Pulicetxtrecive中注册。

$pulictxtcount=Publictxt::where('reciver',Auth::user()->shift)->orwhere('reciver',1)->with('Publictxtrecives')->whereHas('Publictxtrecives',function($q){$q->where('seen', '=', 0);})->count();

这个密码不起作用。

erhoui1w

erhoui1w1#

数据库结构中存在一些冲突。
你说过当用户看到一个字母时,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');
9bfwbjaz

9bfwbjaz2#

$pulictxtcount = Publictxt::with([
        'Publictxtrecives' => function($query){
            $query->where('seen', 0);
        }
        ])
        ->where('reciver', Auth::user()->shift)
        ->orwhere('reciver', 1)
        ->get();

相关问题