Laravel 与 order by 的多态关系
Laravel Polymorphic Relationships with order by
Laravel 版本 7.2.5.
我正在使用 Polymorphic Relationships
存储 access logs (login, logout)
用于多角色应用程序。
数据存储部分工作正常。现在,我需要以 desc
格式显示带分页的记录列表。但是,它以 asc
格式
加载数据
SomeModel.php
class SomeModel extends Model
{
/**
* Polymorphic Relationships
*/
public function loginLog()
{
return $this->morphMany(LoginLog::class, 'employable');
}
public function show($token)
{
return self::where([
'token' => $token,
])->with([
'loginLog:employable_id,ip,created_at,updated_at'
])->first() ?? null;
}
}
我确实找到了解决方案。但是,不知怎的,感觉不是解决这个问题的合适方法。
这里是link
我找到了另一种方法来解决这个问题...
class SomeModel extends Model
{
/**
* Polymorphic Relationships
*/
public function loginLog()
{
return $this->morphMany(LoginLog::class, 'employable');
}
public function show($token, $pagination = 0)
{
return self::where([
'token' => $token,
])->with([
'loginLog' => function ($query) use ($pagination) {
return $query->select([
'employable_id',
'ip',
'created_at',
'updated_at',
])
->skip($pagination)
->take(\Common::paginationLimit())
->orderBy('id', 'DESC');
}
])
->orderBy('id', 'DESC')
->first('id') ?? null;
}
}
因为我不需要基础 table 的参数,所以我只从中获取 id
。
此外,通过这种方式我也可以使用分页(我正在使用 loadmore
分页)。
试试这个
class SomeModel extends Model
{
/**
* Polymorphic Relationships
*/
public function loginLog()
{
return $this
->morphMany(LoginLog::class, 'employable')
->latest();
}
}
Laravel 版本 7.2.5.
我正在使用 Polymorphic Relationships
存储 access logs (login, logout)
用于多角色应用程序。
数据存储部分工作正常。现在,我需要以 desc
格式显示带分页的记录列表。但是,它以 asc
格式
SomeModel.php
class SomeModel extends Model
{
/**
* Polymorphic Relationships
*/
public function loginLog()
{
return $this->morphMany(LoginLog::class, 'employable');
}
public function show($token)
{
return self::where([
'token' => $token,
])->with([
'loginLog:employable_id,ip,created_at,updated_at'
])->first() ?? null;
}
}
我确实找到了解决方案。但是,不知怎的,感觉不是解决这个问题的合适方法。
这里是link
我找到了另一种方法来解决这个问题...
class SomeModel extends Model
{
/**
* Polymorphic Relationships
*/
public function loginLog()
{
return $this->morphMany(LoginLog::class, 'employable');
}
public function show($token, $pagination = 0)
{
return self::where([
'token' => $token,
])->with([
'loginLog' => function ($query) use ($pagination) {
return $query->select([
'employable_id',
'ip',
'created_at',
'updated_at',
])
->skip($pagination)
->take(\Common::paginationLimit())
->orderBy('id', 'DESC');
}
])
->orderBy('id', 'DESC')
->first('id') ?? null;
}
}
因为我不需要基础 table 的参数,所以我只从中获取 id
。
此外,通过这种方式我也可以使用分页(我正在使用 loadmore
分页)。
试试这个
class SomeModel extends Model
{
/**
* Polymorphic Relationships
*/
public function loginLog()
{
return $this
->morphMany(LoginLog::class, 'employable')
->latest();
}
}