如何对laravel中的关系应用reverse()?

时间:2018-05-08 06:02:09

标签: php laravel

我正在Laravel中实现聊天应用程序。我想显示最新的10条记录,如

message 1
message 2
message 3
message 4
.
.
.

在这里,我可以从db获取最新的10条记录并获取数据,

message 10
message 9
message 8
message 7
.
.
.

我要反向这个顺序。

控制器方法

public function getMessages(MeetupGroup $group)
{
    $messages   = $group->meetup_group_messages()->paginate(2);
    return response()->json(['messages' => $messages]);
}

群组模型

public function meetup_group_messages()
{
        return $this->hasMany('App\Models\MeetupGroupMessage\MeetupGroupMessage', 'meetup_group_id', 'id')->latest()->with('user');
}

我检查了reverse(),但它适用于不在查询对象上的模型对象。我没有得到如何扭转这一点。

2 个答案:

答案 0 :(得分:2)

尝试控制器方法:

use Illuminate\Support\Collection;

public function getMessages(MeetupGroup $group)
{
    $messages   = $group->meetup_group_messages()->paginate(2);
    return response()->json(['messages' => $messages->sortBy('Your_Column_name')->values()->all()]);
}

public function getMessages(MeetupGroup $group)
{
    $messages   = $group->meetup_group_messages()->paginate(2);

    $records = collect($messages)->sortBy('Your_Column_name')->values()->all();

    return response()->json(['messages' => $records]);
}

答案 1 :(得分:1)

如何进行此操作会有一些问题。

按照模型,控制器和迁移的Naming Conventions文档进行操作。这个answer简化了命名约定。

您的控制器和型号也应该是一种资源,以便通过您的路线轻松访问。这也启用了CRUD功能。这可以通过工匠命令来实现。此命令还将Laravel的命名约定用于您的数据库表,迁移,控制器和模型,从而可以轻松地遵循Laravel开发中的最佳实践。

php artisan make:model Message --migration --controller --resource

现在将资源添加到routes / web.php文件中。

Route::resource('messages', 'MessagesController');

要查看新创建的资源路由,请使用以下命令:

php artisan route:list

然后,您需要创建3个刀片视图,索引,创建和编辑。我建议创建一个名为“messages”的文件夹来对其他人进行排序。您的控制器将在其中具有索引功能。它看起来应该是这样的。

public function index()
{
  $messages = Message::orderBy('updated_at', 'asc')->paginate(2);
  return view('messages.index', compact('messages'));
}

您的index.blade.php文件应包含以下代码:

@foreach($message as $message)
  <p>{{ $message->db_column_name1 }} </p>
  <p>{{ $message->db_column_name2 }} </p>
@endforeach