我正试图制作一个票务系统,我正在努力展示一个用户的票。现在这种关系的运作方式是,票被分配给一个用户,然后用户被分配到一个校园。因为校园是明确的,所以我需要把票分配到校园的位置,并有一个技术分配到那个校园。技术人员只应该看到技术人员被分配到的校园的门票。
理论上,它应该像用户被更改或重新定位一样工作,那么所需要做的就是更新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
复制相似问题