我正在尝试使用Laravel的'doesntHave'功能。
我的想法是我有一个帖子队列,一旦帖子被批准,它就会从队列中删除。
当帖子从队列中删除时 - 它意味着它已经批准并准备在网站上显示,这就是为什么我需要使用whereHasNot来显示不在队列中的帖子(已批准)。
不幸的是,目前Queue有一个项目,即使一个项目存在于队列中,它也会显示在网页上,应该隐藏它。
可能出现什么问题?
队列模型:
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);