Laravel 此集合实例上不存在属性[images]

Laravel 此集合实例上不存在属性[images],laravel,collections,properties,instance,message,Laravel,Collections,Properties,Instance,Message,请帮助我解决这个问题,我有两个模型事件和事件图像,具有一对多关系SIP,每个事件可以有多个图像,因此我希望能够使用事件模型中的图像方法循环事件,并在索引页上显示该事件多个图像中的每个事件,并使每个图像成为显示页面的链接,其中有旋转木马,将显示属于该事件的所有图像。我一直在犯这个错误 此集合实例上不存在属性[图像]。 这是事件模型 class Event extends Model { protected $fillable = ['title', 'date', 'time', 'ven

请帮助我解决这个问题,我有两个模型事件和事件图像,具有一对多关系SIP,每个事件可以有多个图像,因此我希望能够使用事件模型中的图像方法循环事件,并在索引页上显示该事件多个图像中的每个事件,并使每个图像成为显示页面的链接,其中有旋转木马,将显示属于该事件的所有图像。我一直在犯这个错误

此集合实例上不存在属性[图像]。

这是事件模型

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()
返回一个
集合
。请停止猜测,在本地试用您的代码。他为什么要建立雄辩的关系?他也在寻找图像?我不知道您在猜测什么?