Я использую Laravel 6.0 У меня есть 4 разных стола.
Таблицы:
post_category
| я бы | Relationship_post_id | post_type | category_id |
|---|
photo_post
| я бы | заглавие | изображение | создано на |
|---|
text_post
| я бы | заглавие | содержание | создано на |
|---|
video_post
| я бы | заглавие | video_source_url | создано на |
|---|
Я хотел бы перечислить сообщения в двух диапазонах дат из таблицы post_category. Например
PostCategory::whereBetween('created_at',[$from, $to])->get();
Результат должен быть;
Результат
Как мне это сделать ?
Модели: PostCategory
class PostCategory extends Model
{
use SoftDeletes;
protected $table = 'post_category';
public $timestamps = true;
protected $fillable = [
'relation_post_id',
'post_type', // 1: text, 2: photo, 3: video
'category_id',
];
public function text()
{
return $this->belongsTo('App\TextPost','relation_post_id','id');
}
public function photo()
{
return $this->belongsTo('App\PhotoPost','relation_post_id','id');
}
public function video()
{
return $this->belongsTo('App\VideoPost','relation_post_id','id');
}}
TextPost
class TextPost extends Model
{
use SoftDeletes;
protected $table = 'text_post';
public $timestamps = true;
protected $fillable = [
'title',
'content',
];
}
PhotoPost
class PhotoPost extends Model
{
use SoftDeletes;
protected $table = 'photo_post';
public $timestamps = true;
protected $fillable = [
'title',
'image',
];
}
Видео сообщение
class VideoPost extends Model
{
use SoftDeletes;
protected $table = 'video_post';
public $timestamps = true;
protected $fillable = [
'title',
'video_source_url',
];
}
хорошо, я обновил вопросы, спасибо
Ах хорошо. Довольно простой. В таком виде будет сложно иметь массив всех этих моделей. Вам придется отфильтровать их по отдельности, а затем объединить. Рассмотрите возможность использования полиморфных отношений, как указано ниже, поскольку ваш пример кажется почти предопределенным для этого случая и облегчит вашу жизнь программирования.






Конечно, это возможно. Но так как мы знаем только структуру вашей базы данных, но не кодовую базу, трудно сказать. Интуитивно я бы выбрал полиморфные отношения.
Не могли бы вы предоставить код ваших моделей Eloquent, которые у вас есть?