我正试图制作一个票务系统,我正在努力展示一个用户的票。现在这种关系的运作方式是,票被分配给一个用户,然后用户被分配到一个校园。因为校园是明确的,所以我需要把票分配到校园的位置,并有一个技术分配到那个校园。技术人员只应该看到技术人员被分配到的校园的门票。
理论上,它应该像用户被更改或重新定位一样工作,那么所需要做的就是更新TechID列。下面是表关系当前的工作方式:
实际上,我有一个类似的问题,我之前问过,但这是在我意识到它以前的结构方式不是理想的设置之前。
下面是指向前面问题的链接:Previous Question
这是我目前的控制器:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Auth;
use App\User;
use App\Campus;
use App\Ticket;
class PagesController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
// Dashboard Page
public function index()
{
$user = User::with(['campuses' => function($query) {
$query->select(['TechID', 'CampusName']);
},'tickets'])->where('id', Auth::id())->first();
$campuses = Campus::all()->where('TechID', $user->id);
$tickets = Ticket::all()->where('CampusID', $campuses->pluck('CampusID'));
return view('home')->with([
'user' => $user,
'campuses'=>$campuses,
'tickets'=>$tickets]);
}
// Queue Page
public function Queue() {
return view('Pages.Queue');
}
// Reports Page
public function Reports() {
return view('Pages.Reports');
}
// Search Page
public function Search() {
return view('Pages.Search');
}
}我希望这能行,但实际上没有票出现。用户可以有多个校园,所以我在想,也许这就是事情搞砸的地方。任何帮助都非常感谢。
发布于 2018-12-19 20:18:14
我建议在all/get之前执行where,以便在数据库级别上进行筛选,而不是在PHP--all之前让数据库返回所有的值,然后使用Collection过滤结果。另外,第二个查询需要whereIn,因为您要传递一个值数组:
$campuses = Campus::where('TechID', $user->id)->get();
$tickets = Ticket::whereIn('CampusID', $campuses->pluck('CampusID'))->get();https://stackoverflow.com/questions/53858371
复制相似问题