我想在laravel中组合两个独立的分页模型
我想在laravel中组合两个单独的分页模型,但视图和分页中的错误不起作用。 我的控制器代码,我也尝试了不同的方法,数据来了,但分页不是我的目标分页我想在laravel中组合两个独立的分页模型,laravel,merge,eloquent,pagination,Laravel,Merge,Eloquent,Pagination,我想在laravel中组合两个单独的分页模型,但视图和分页中的错误不起作用。 我的控制器代码,我也尝试了不同的方法,数据来了,但分页不是我的目标分页 <?php namespace App\Http\Controllers\Frontend\News; use App\Http\Controllers\Controller; use App\Models\Blog; use App\Models\Company\CompanyEvent; class NewsController
<?php
namespace App\Http\Controllers\Frontend\News;
use App\Http\Controllers\Controller;
use App\Models\Blog;
use App\Models\Company\CompanyEvent;
class NewsController extends Controller
{
function news()
{
$blogs = Blog::sort()->with('company')->paginate(15);
$events = CompanyEvent::sort()->with('company')->paginate(15);
$events=collect($events)->merge($blogs);
return view('news.news',compact('events'));
}
function detail()
{
return "detail";
}
}
我认为您应该使用原始查询。否则,重新构建您的模型..ı有不止一个关系..在原始的join查询中,您只需要外键列。如果您不理解,请发布您的数据库表,我将向您展示示例。
<?php
namespace App\Models;
use App\Models\Company\Company;
use App\Models\Interfaces\CreatedAt;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\MorphToMany;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Query\Builder;
use Illuminate\Support\Carbon;
use Illuminate\Http\Request;
/**
* Class Blog
* @package App\Models
* @mixin Builder
* @property boolean $active
* @property int $company_id
* @property string $title
* @property string $url
* @property string $context
* @property string $tags
* @property string $main
* @property string $seo_title
* @property string seo_description
* @property string $seo_keyword
* @property string $image
* @property-read CreatedAt|Carbon $created_at
* @property-read CreatedAt|Carbon $updated_at
* @property-read CreatedAt|Carbon $deleted_at
* @method static Builder|Blog find(int $id)
* @method static Builder|Blog where($column, $operator = null, $value = null, $boolean = 'and')
* @method static Builder|Blog findOrFail($id)
* @method static Builder|Blog active()
* @method Builder|Blog filter(Request $request) bind to scopeFilter method
* @method static Builder|Blog sort() laravel query bind to scopeSort method
* @method static Builder|Blog latest() laravel query bind to scopeSort method
*
*/
class Blog extends Model
{
use SoftDeletes;
protected $table = 'blogs';
/**
* @return bool
*/
public function isActive(): bool
{
return (bool)$this->active;
}
/**
* @param bool $save
* @return bool
*/
public function toggleActive($save = false)
{
$this->active = !$this->active;
if ($save == true)
return $this->save();
return false;
}
/**
* @return MorphToMany
*/
function comments()
{
return $this->morphToMany('App\Models\Blog', 'commentable');
}
/**
* @return string
*/
function getAgoTimeAttribute()
{
return Carbon::parse($this->created_at)->diffForHumans();
}
/**
* @param $value
* @return array
*
*/
function getTagsAsArrayAttribute($value)
{
return explode(',', $this->tags);
}
/**
* @param Builder|Blog $query
* @return mixed
*
*/
function scopeActive($query)
{
return $query->where('active', 1);
}
/**
* @return BelongsTo
*/
function company()
{
return $this->belongsTo(Company::class, 'company_id', 'id');
}
/**
* @return string
*/
function getTimeAgoAttribute()
{
return Carbon::parse($this->created_at)->diffForHumans();
}
/**
* @return false|string
*/
function getShortContextAttribute()
{
return substr($this->context, 0, 250);
}
/**
* @param Blog|Builder $query
* @param Request $request
* @return mixed
*/
function scopeFilter($query, $request)
{
$requests = $request->except('page');
foreach ($requests as $key => $val)
$query = $query->where($key, 'like', '%' . $val . '%');
return $query;
}
/**
* @param Builder|Blog $query
* @return mixed
*/
function scopeSort($query)
{
return $query->orderBy('created_at', 'desc');
}
}
<?php
namespace App\Models\Company;
use App\Calendar\Day\Day;
use App\Calendar\Month\Month;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Query\Builder;
/**
* Class CompanyEvent
* @mixin Builder
* @package App\Models\Company
* @property \DateTime $date
* @method static Builder|CompanyEvent get()
* @method static Builder|CompanyEvent find($id)
* @method static Builder|CompanyEvent findOrFail($id)
* @method static Builder|CompanyEvent active() bind to scopeActive
* @method static Builder|CompanyEvent sort()
* @method static Builder|CompanyEvent latest()
*
*/
class CompanyEvent extends Model
{
use SoftDeletes;
protected $table = 'company_events';
/**
* get day name from date column
* @return string
*
*/
function getDayNameAttribute()
{
$dayIndex = (int)date('w', strtotime($this->date));
return ucfirst(Day::DAY_NAMES[$dayIndex]);
}
/**
* get month from date column
* @return string
*/
function getMonthAttribute()
{
$monthIndex = (int)date('m', strtotime($this->date));
return ucfirst(Month::MONTH_NAMES[$monthIndex - 1]);
}
/**
* @return false|string
*/
function getDayAttribute()
{
return date('d', strtotime($this->date));
}
/**
* @return bool
*
*/
function getIsExpireDateAttribute()
{
$date = date('Y-m-d', strtotime($this->date));
$todayDateAsTime = strtotime(date('Y-m-d'));
$eventDateAsTime = strtotime($date);
if ($todayDateAsTime > $eventDateAsTime)
return true;
return false;
}
/**
* @return bool
*
*/
function getIsEventTodayAttribute()
{
$date = date('Y-m-d', strtotime($this->date));
$todayDateAsTime = strtotime(date('Y-m-d'));
$eventDateAsTime = strtotime($date);
return (boolean)($eventDateAsTime == $todayDateAsTime);
}
/**
* @return string
*/
function getAgoTimeAttribute()
{
return Carbon::parse($this->date)->diffForHumans();
}
/**
* @return BelongsTo
*/
function company()
{
return $this->belongsTo(Company::class, 'company_id', 'id');
}
/**
* @param Builder|CompanyEvent $query
* @return mixed
*/
function scopeActive($query)
{
return $query->where('active', 1);
}
/**
* @param Builder|CompanyEvent $query
* @return mixed
*/
function scopeSort($query)
{
return $query->orderBy('created_at','desc');
}
}
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Mr. Burhan</title>
</head>
<body>
{{$events->total()}} adet bulundu
<ul>
@foreach( $events as $value )
<li>{{$value}}</li>
@endforeach
</ul>
{{$events->appends(request()->all())->render()}}
</body>
</html>