Laravel 此集合实例上不存在属性[images]
请帮助我解决这个问题,我有两个模型事件和事件图像,具有一对多关系SIP,每个事件可以有多个图像,因此我希望能够使用事件模型中的图像方法循环事件,并在索引页上显示该事件多个图像中的每个事件,并使每个图像成为显示页面的链接,其中有旋转木马,将显示属于该事件的所有图像。我一直在犯这个错误 此集合实例上不存在属性[图像]。 这是事件模型Laravel 此集合实例上不存在属性[images],laravel,collections,properties,instance,message,Laravel,Collections,Properties,Instance,Message,请帮助我解决这个问题,我有两个模型事件和事件图像,具有一对多关系SIP,每个事件可以有多个图像,因此我希望能够使用事件模型中的图像方法循环事件,并在索引页上显示该事件多个图像中的每个事件,并使每个图像成为显示页面的链接,其中有旋转木马,将显示属于该事件的所有图像。我一直在犯这个错误 此集合实例上不存在属性[图像]。 这是事件模型 class Event extends Model { protected $fillable = ['title', 'date', 'time', 'ven
class Event extends Model
{
protected $fillable = ['title', 'date', 'time', 'venue', 'body'];
public function images()
{
return $this->hasMany('App\EventImage');
}
}
class EventImage extends Model
{
protected $fillable = ['images', 'caption','event_id'];
public function event()
{
return $this->belongsTo('App\Event');
}
}
事件迁移
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();
});
}
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();
});
}
这是EventImage模型
class Event extends Model
{
protected $fillable = ['title', 'date', 'time', 'venue', 'body'];
public function images()
{
return $this->hasMany('App\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('events', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->string('date');
$table->string('time');
$table->string('venue');
$table->mediumText('body');
$table->timestamps();
});
}
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>
但是当我对EventController进行此更改并保存它时
public function index(Request $request)
{
$events = Event::all();
$event = Event::find(49);
$imageEvents = $event->images->take(1);
return view('events.index', compact('events', $events, 'imageEvents',
$imageEvents));
}
它工作正常,只是不是动态的,我必须在事件id中输入find方法,并且所有事件只显示一个图像。
$events
是一个集合
,除非循环,或者只通过event::first()
加载单个事件,否则无法访问->图像('images')->get();
@AbdullahAlNoor No,在这里使用和('images')
不会有什么区别。get()
仍然返回一个集合
;同样的问题也适用。@AbdullahAlNoor No!它不会…$events
仍然是一个集合
那里…get()
返回一个集合
。请停止猜测,在本地试用您的代码。他为什么要建立雄辩的关系?他也在寻找图像?我不知道您在猜测什么?