dontHave功能不起作用

时间:2018-03-14 03:44:54

标签: laravel eloquent

我正在尝试使用Laravel的'doesntHave'功能。

我的想法是我有一个帖子队列,一旦帖子被批准,它就会从队列中删除。

当帖子从队列中删除时 - 它意味着它已经批准并准备在网站上显示,这就是为什么我需要使用whereHasNot来显示不在队列中的帖子(已批准)。

不幸的是,目前Queue有一个项目,即使一个项目存在于队列中,它也会显示在网页上,应该隐藏它。

enter image description here

可能出现什么问题?

队列模型:

namespace App;
use Illuminate\Database\Eloquent\Model;
class Queue extends Model
{
    protected $table = 'queue';
    protected $primaryKey = null;
    public $timestamps = false;
    public $incrementing = false;
    public function parent(){
        return $this->belongsTo('App\Blog', 'url');
    }
}

博客模型:

namespace App;

use Illuminate\Database\Eloquent\Model;

class Blog extends Model
{
    protected $table = 'blog';
    public $timestamps = false;
    protected $primaryKey = 'id';
    public $incrementing = true;
    public function queue(){
        return $this->hasOne('App\Queue', 'url');
    }
}

'doesntHave'不起作用的功能。

public function getPosts($feed, $amount){
    $posts = \App\Blog::doesntHave('queue')
    ->where('active', "=", 1)
    ->where('feed', '=', $feed)
    ->orderBy('id', 'DESC')
    ->limit($amount)
    ->get();
    foreach ($posts as $post){
        $post->post = $this->shortenPost($post->post);
    }
    return $posts;
    //Make first one large
}

DDL队列表:

CREATE TABLE queue
(
    url VARCHAR(150) NOT NULL,
    content_type VARCHAR(50),
    user_id INT(11),
    timestamp DATETIME
);

Blog DDL

CREATE TABLE blog
(
    id INT(11) NOT NULL AUTO_INCREMENT,
    title VARCHAR(200),
    url VARCHAR(150) PRIMARY KEY NOT NULL,
);
CREATE UNIQUE INDEX blog_id_uindex ON blog (id);
CREATE UNIQUE INDEX blog_url_uindex ON blog (url);

0 个答案:

没有答案