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

问题描述 投票:2回答:2

我正在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(),但它适用于不在查询对象上的模型对象。我没有得到如何扭转这一点。

php laravel
2个回答
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
投票

你如何做到这一点有一些问题。

请遵循模型,控制器和迁移的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
© www.soinside.com 2019 - 2024. All rights reserved.