Я использую Laravel 5.7 и сейчас пытаюсь установить связь между тремя таблицами с именем:
- Билеты (PK - TicketID, FK - CampusID)
- Кампус (PK -CampusID, FK - TechID)
- Пользователь (PK - TechID)
Не думаю, что я правильно настроил свои модели, так как показываю билет, где CampusID
нетне принадлежат к TechID
.Я ищу лучшую практику по настройке Eloquent для сохранения целостности данных, чтобы я мог предотвратить любые отклонения.Как упоминалось выше, внешний ключ для Tickets
должен ссылаться на первичный ключ Campus
, а внешний ключ Campus
должен ссылаться на первичный ключ User
.
Вот мои Models
:
Билет
protected $table='tickets';
public function user() {
return $this->belongsTo(User::class);
}
Кампус
protected $table='campus';
public function user() {
return $this->belongsTo(User::class);
}
Пользователь
public function campus()
{
return $this->hasMany(Campus::class, 'TechID');
}
public function ticket()
{
return $this->hasMany(Ticket::class, 'AssignedTo');
}
Вот мой контроллер:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Auth;
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 = Auth::user();
$campuses = Campus::where('TechID',$user->id)->pluck('CampusName');
$tickets = Ticket::all()->where('AssignedTo', $user->id);
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');
}
}
Я думаю, что с моими моделями все в порядке, но мой контроллер, вероятно, там, где я допустил некоторые ошибки.Я уже пытался читать вопросы здесь, смотреть видео и читать документы Laravel, но пока что ничего со мной не задело.Я действительно ценю любую помощь.В идеале это должно каскадно меняться.Поэтому, если у меня возникнет ситуация, когда я захочу изменить местоположение, к которому относится технология, я могу просто внести изменения в таблицу Campus
, вероятно, в столбец TechID
.