[英]Return results from two tables joined by foreign key in Laravel.
我在MySQL中有兩個表,其中一個引用另一個。
第一個是users
表
第二個表是event
表,其中包含creator_id
id
並引用用戶表中的id
。 所以creator_id
是外鍵。
現在我的問題是如何使用laravel獲取擁有event
表中每一列的每個用戶的名稱。
我對如何做到這一點一無所知。 到目前為止,我讀過的Laravel文檔沒有幫助。
這是event
表的模型。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Auth;
use App\signupModel;
class eventModel extends Model
{
//
public $table = "event";
protected $fillable = ['title', 'description', 'event_flier', 'event_logo', 'org_name', 'org_logo', 'free', 'state', 'city' ];
public function getUser(){
$id = Auth::user()->id;
return users::where('id', $this->id);
}
}
?>
用戶模型為:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class signupModel extends Model
{
//
public $table = "users";
protected $primaryKey = 'id';
protected $fillable = [
'first_name', 'last_name', 'email', 'password', 'gender', 'phoneNumber', 'twitter', 'facebook', 'instagram', 'dob'
];
}
我只想要一種當每個用戶使用laravel登錄時可以從event
表中查看其數據的方法。
請幫忙。 謝謝。
在此, belongsTo
用於返回事件的創建者。
namespace App;
use Illuminate\Database\Eloquent\Model;
use Auth;
use App\signupModel;
class eventModel extends Model
{
public $table = "event";
protected $fillable = ['title', 'description', 'event_flier', 'event_logo', 'org_name', 'org_logo', 'free', 'state', 'city' ];
public function getUser(){
return $this->belongsTo('App\signupModel', 'creator_id');
}
}
?>
在控制器中,您可以按以下方式檢索事件的創建者
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\eventModel;
use App\signupModel;
class HomeController extends Controller
{
* @return \Illuminate\Http\Response
*/
public function index()
{
$event = eventModel::find(1);
$creator = $event->getUser; // return user instance
dump($creator); // for check result
echo $creator->first_name; //print firstname of creator
}
}
您需要在用戶模型中進行
public function getEvents(){
return $this->hasOne('Your event model', 'creator_id');
}
並在控制器中導入模型,然后像這樣嘗試
$events=User::with('getEvents')->get();
或者,如果您要獲取一條記錄,則應在控制器中嘗試
$events=User::find('Your Auth Id');
$creators=$events->getEvents;
或者你也應該嘗試這個
$users = DB::table('users')
->leftJoin('events', 'users.id', '=', 'events.creator_id')->where('users.id','=','Your user id')
->get();
事件屬於其所有者(用戶)
如果遵循Laravel核心語法,則事件模型必須如下所示:
class Event extends Model
{
public function user()
{
return $this->belongsTo(User::class);
}
}
用戶模型必須類似於:
class User extends Model
{
public function event()
{
return $this->hasOne('App\Event');
}
}
如果是這樣,您可以使用:
$events = App\\User::find(1)->event;
這是常見的情況,您可以根據自己的關系類型使用邏輯。 這是文檔 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.