问题描述
请帮我解决这个问题,我有两个模型的Event和Eventimages具有一对多的关系,每个事件可以有多个图像,所以我希望能够使用事件模型并在索引页面上用该事件的多个图像中的一个图像显示每个事件,并使每个图像链接到显示页面的链接,该页面上有轮播显示所有属于该事件的图像。我不断收到此错误
此集合实例上不存在属性[images]。
这是事件模型
class Event extends Model
{
protected $fillable = ['title','date','time','venue','body'];
public function images()
{
return $this->hasMany('App\Eventimage');
}
}
事件迁移
public function up()
{
Schema::create('events',function (Blueprint $table) {
$table->id();
$table->string('title');
$table->string('date');
$table->string('time');
$table->string('venue');
$table->mediumText('body');
$table->timestamps();
});
}
这是Eventimage模型
class Eventimage extends Model
{
protected $fillable = ['images','caption','event_id'];
public function event()
{
return $this->belongsTo('App\Event');
}
}
Eventimage迁移
public function up()
{
Schema::create('event_images',function (Blueprint $table) {
$table->id();
$table->string('images');
$table->string('caption');
$table->integer('event_id')->unsigned();
$table->foreign('event_id')->references('id')->on('events')
->onDelete('cascade');
$table->timestamps();
});
}
这是EventController
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Event;
use App\Eventimage;
class EventController extends Controller
{
/**
* display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$events = Event::all();
$imageEvents = $events->images->take(1);
return view('events.index',compact('events',$events,'imageEvents',$imageEvents));
}
这是视图
<div class="container">
<div class="tab_">
<ul>
<li><a href="#section1">Recent Events</a></li>
<li><a href="#section2">All Events</a></li>
</ul>
<section id="section1">
<div class="col s12 m7 s7">
@foreach ($events as $k => $event)
@if ($k % 2 == 0)
<div class="card horizontal">
<div class="card-image">
{{-- <img src="{{asset('images/Amber-heard-7031-
2560x1600_1598312173.jpg')}}" class="fadeIn"> --}}
@foreach ($imageEvents as $imageEvent)
<a href=""><img class="img-fluid d-block card-img" style
="width:100%" src="{{asset('storage/images')}}/{{$imageEvent->images}}"
alt="">
</a>
@endforeach
</div>
<div class="card-stacked">
<div class="card-content">
<span class="card-title">{{$event->title}}</span>
<p>{{$event->body}}
</p>
</div>
<div class="card-action">
<a href="#">This is a link</a>
</div>
</div>
</div>
</div>
<div class="col s12 m7">
@else
<div class="card horizontal" id="fadedfx">
<div class="card-stacked">
<div class="card-content">
<span class="card-title">{{$event->title}}</span>
<p>{{$event->body}}
</p>
</div>
<div class="card-action">
<a href="#">This is a link</a>
</div>
</div>
<div class="card-image">
<a href=""><img class="img-fluid d-block card-img" style
="width:100%" src="{{asset('storage/images')}}/{{$imageEvent->images}}"
alt=""></a>
</div>
</div>
@endif
@endforeach
</div>
这是路线
**Route::resource('events','EventController',[
'names'=> [
'index' => 'eventdex','create' => 'createvent','store' => 'storevent','show' => 'showevent','edit' => 'editevent','update' => 'updateevent','destroy' => 'destroyevent'
]
]);**
但是当我对EventController进行更改并将其保存
public function index(Request $request)
{
$events = Event::all();
$event = Event::find(49);
$imageEvents = $event->images->take(1);
return view('events.index',$imageEvents));
}
它工作正常,但不是动态的,我必须在事件ID中添加find方法,并且所有事件仅显示一张图像。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)