Если использование колонок login и owner не является чем-то 100% необходимым, я бы сделал так. Текст скриптов не полный, только нужные части.
Mysql:
Таблица users:
id,login
Таблица sites:
id, users_id,url,title
Laravel
Модели:
Users:
public function sites(){
return $this->hasMany('Site');
}
Site:
public funtion user() {
return $this->belongsTo('User');
}
CabinetController:
// Используем IOC контейнер, чтобы в будущем было легче тестировать, также строка
// $this->userManager->getSites() гораздо более понятна через 3 месяца, чем
// Auth::user()->short()->getResults()
use Acme\UserManager as UserManager;
protected $userManager;
public function __construct(UserManager $userManager) {
$this->userManager = $userManager;
}
public function index(){
return View::make('cabinet')->with('sites', $this->userManager->getSites());
}
Acme\UserManager:
public function getSites() {
if (Auth::check()) {
return User::find( Auth::id() )->sites()->get();
}
return false;
}
cabinet.blade.php (За показ страница в виде для гостя или пользователя, отвечает View, если страницы очень разные, я бы разделил их на уровне route):
@if($sites)
@foreach($sites as $site)
<ul>
<li>url: {{ $site->url }}</li>
<li>title: {{ $site->title }}</li>
<li>description: {{ $site->description }}</li>
<li>keywords: {{ $site->keywords }}</li>
</ul>
@endforeach
@elseif
<p>Войдите, чтобы пользоваться сервисом</p>
@endif
Набросал по быстрому, могут быть опечатки, также в процессе рефакторинга многое может меняться.
Если же использовать ключи login и owner, то :
Users:
public function sites(){
return $this->hasMany('Site', 'owner', 'login');
}
Site:
public funtion user() {
return $this->belongsTo('User' , 'owner', 'login');
}