gpt4 book ai didi

php - 在 Laravel 中有更好的方法吗?

转载 作者:搜寻专家 更新时间:2023-10-31 21:23:33 24 4
gpt4 key购买 nike

我是 Laravel 的新手,我一直在为角色扮演游戏编写 CMS,我遇到了一些我认为是困惑/糟糕做法的代码,我只是想知道这是否真的是最简单和最好的方法去做吧?我主要寻找的是在不更改太多代码的情况下以最佳方式执行此操作的最佳实践。

所以我需要做的是我需要将用户业务和用户业务职位传递给业务概览 View /页面。我有 Business 和 BusinessPositions 的每个表的模式,我将在下面发布。

企业:

<?php
namespace App\Database\Website\Roleplay\Business;

use Eloquent;

class Businesses extends Eloquent
{
protected $primaryKey = 'id';
protected $table = 'srp_businesses';
public $timestamps = false;
protected $fillable = [];

public function positions()
{
return $this->hasMany('App\Database\Roleplay\Business\BusinessPositions', 'business_id');
}

public function founder()
{
return $this->belongsTo('App\Database\Website\User\Player');
}
}

业务职位:

<?php
namespace App\Database\Website\Roleplay\Business;

use Eloquent;

class BusinessPositions extends Eloquent
{
protected $primaryKey = 'id';
protected $table = 'srp_business_positions';
public $timestamps = false;
protected $fillable = [];
}

这是发送我的 View 的 Controller 函数

$businesses = Cache::remember('overview.businesses', 1, function() {
return Businesses::get();
});

$businessPositions = Cache::remember('overview.business.positions', 1, function() {
return BusinessPositions::get();
});

$acceptedCount = $businesses->where('business_owner_id', '=', Auth::user()->id)
->where('business_status', '=', 'accepted')
->count();
$pendingCount = $businesses->where('business_owner_id', '=', Auth::user()->id)
->where('business_status', '=', 'pending')
->count();
$myBusiness = Businesses::find(Auth::user()
->roleplay->business_id);
$myBusinessPosition = $businessPositions->where('business_id', '=', $myBusiness->business_id)
->where('position_id', '=', Auth::user()->roleplay->business_position)
->first();

return view('frontend.business.overview', compact('acceptedCount', 'pendingCount', 'myBusiness', 'myBusinessPosition'));

我认为困惑的部分是我获得业务职位的方式,也许有办法让业务变得更好?

我如何获得业务职位(代码分解)

$myBusinessPosition = $businessPositions->where('business_id', '=', $myBusiness->business_id)
->where('position_id', '=', Auth::user()
->roleplay->business_position)
->first();

我正在使用 Laravel 5.3,谢谢。

最佳答案

可以使用作用域,点击here去阅读关于这个的文档。

这看起来是不是干净多了?

$user->businesses()->ofStatus('accepted')->count();
$user->businesses()->ofStatus('pending')->count();

此外,您应该修复对 auth 的调用,而不是像这样进行原始调用。

->where('business_owner_id', '=', Auth::user()->id)

创建一个变量,并对其进行保护,以便在您的代码范围内进一步使用它。

$user = Auth::user()

然后,只使用用户,而不是授权码。

->where('business_owner_id', '=', $user->id)

关于php - 在 Laravel 中有更好的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41266417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com