簡體   English   中英

從Laravel中由外鍵聯接的兩個表中返回結果。

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM