2

Commentsソフト削除を使用するモデルがあります。それはone-to-many私のモデルと関係がありPostます。

私のサイトにはネイティブ モバイル アプリが関連付けられており、投稿に関する情報を送信するときにコメントの数を送信する必要があります。何らかの理由で、論理的に削除されたアイテムと共に数が返されます。

Post 配列が機能し、次を使用してコメント数を送信しています

protected $appends = array('score','commentcount', 'ups', 'downs');

public function getCommentcountAttribute()
{    
     return DB::table('comments')
         ->where('post_id',$this->id)
         ->where('deleted_at','=',NULL)
         ->count();    
}

私の投稿モデルで。私も試してみました

public function getCommentcountAttribute()
{
    return $this->comments()->count();
}

public function getCommentcountAttribute()
{   
    return $this->comments()->whereNull('deleted_at')->count();
    // also: return $this->comments()->where('deleted_at',NULL)->count();
}

また、関係を定義するときに、と の->whereNUll('deleted_at')両方に追加しようとしましたが、うまくいきませんでした。->hasMany('Comment')->belongsTo('Post')

データベースをチェックして、Fluent と Eloquent が生成することを期待している SQL を実行しました。

SELECT * FROM `comments` WHERE post_id=31 and deleted_at=null

(31は私がテストに使用している投稿です)。何も機能していません。モデル全体を投稿したくないので、特定の機能が必要な場合はお知らせください。

4

4 に答える 4

2

で動作させることができました->whereRaw('deleted_at = ?',array(NULL))。しかし、それは私にはかなりハックに思えます。より良い答えを喜んで受け入れます。

于 2014-01-10T21:57:46.500 に答える