【问题标题】:Method Illuminate\Database\Eloquent\Collection::links does not exist方法 Illuminate\Database\Eloquent\Collection::links 不存在
【发布时间】:2019-05-23 15:03:21
【问题描述】:

我在用户和消息之间创建了模型关系。我想为经过身份验证的用户实现消息列表,但出现以下错误。

方法 Illuminate\Database\Eloquent\Collection::links 不存在

控制器

public function index()
{
    $user_id = auth()->user()->id;
    $user = User::find($user_id);
    return view('message.index')->with('messages', $user->message);
}

消息提供者

class message extends Model
{
    public function user() {
        return $this->belongsTo('App\User');
    }
}

用户提供者

public function message ()
{
    return $this->hasMany('App\Message');
}

index.blade.php

@extends('layouts.app')
@section('content')
    <h1>messages</h1>
    @if(count($messages)>0)
        @foreach ($messages as $message)
            <div class="well">
                <h3><a href="/message/{{$message->id}}">{{$message->user}}</a></h3>
                <small>Written on {{$message->created_at}} </small>
            </div>
        @endforeach
        {{$messages->links()}}
    @else
        <p> no post found </p>
    @endif
@endsection

错误

“方法 Illuminate\Database\Eloquent\Collection::links 不存在。(查看:C:\xampp\htdocs\basicwebsite\resources\views\message\index.blade.php)”

【问题讨论】:

  • 错误消息看起来像您正在调用 index.blade.php 文件中的 links() 方法。你在做这个吗?如果没有,您是否在任何地方打电话给links()
  • @GeorgeHanson 感谢您的回答,但我不认为我将链接称为 laravel 的新手,我将分享 index.blade 视图
  • 看起来您正在调用视图中的links() 方法。您专门致电$messages-&gt;links()。 Laravel 集合上没有 links() 方法,您是否要进行分页?
  • 你打电话给links()。看一看:@endforeach {{$messages-&gt;links()}} @else
  • @GeorgeHanson 对不起,我是 stackoverflow 的新手,我的英语不好,对不起,但我正在尝试显示仅在仪表板上记录他的消息的用户的消息

标签: laravel


【解决方案1】:

检查您的视图刀片,该方法 (links()) 只能在您的数据模型实现 paginate() 方法时使用。

如果你不使用paginate(),请删除这部分:

{{$messages->links() }}

【讨论】:

    【解决方案2】:

    有两种方法可以解决此问题:

    1. 从数据库中搜索数据时使用分页功能:

    $users = DB::table('users')->where('id',$user_id)->paginate(1);

    1. 从 index.blade.php 中删除 links() 函数

    {{ $messages->links() }}

    【讨论】:

      【解决方案3】:

      如果您尝试在数据到达视图时对其进行分页,那么您需要在将数据传递到视图之前在控制器中添加分页。示例

      return $users = Users::select('id','name')->paginate(10);
      

      使用控制器中的分页方法,您可以调用链接方法来对视图中的对象进行分页,如下所示

       {{$users->links()}}
      

      希望对你有帮助

      【讨论】:

        【解决方案4】:

        你可以在你的控制器文件中做这样的事情。

            public function index()
            {
                $messages = Message::all()->paginate(5);
                $user_id = auth()->user()->id;
                $user = User::find($user_id);
                return view('message.index')->with('messages', $messages, $user->message);
            }
        

        【讨论】:

        • 在已有答案的情况下,这会增加价值吗?
        【解决方案5】:

        将 {{ $messages->links() }} 删除到 index.blade.php 中,因为 {{ $messages->links() }} 只有在使用分页时才受支持

        【讨论】:

        • 这不会在之前的答案中添加任何内容。如果您有新内容要添加,请尝试回答。
        猜你喜欢
        • 1970-01-01
        • 2022-11-11
        • 2020-11-21
        • 2021-09-08
        • 2020-11-13
        • 2019-12-11
        • 2020-02-04
        • 2019-11-12
        • 2019-05-24
        相关资源
        最近更新 更多