我在MySQL中有两个表,其中一个表引用另一个表。
第一个是users
表
第二个表是event
表,其中包含引用users表中creator_id
的{{1}}。所以id
是外键。
现在我的问题是如何使用laravel获取拥有creator_id
表中每列的每个用户的名称。
我对如何做到这一点毫无头绪。我到目前为止阅读的laravel文档没有帮助。
这是event
表的模型。
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);
}
}
?>
我只想要一种方法,当使用laravel登录时,每个用户都可以从<?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'
];
}
表中查看他的数据。
请帮忙。谢谢。
答案 0 :(得分:1)
此处使用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
}
}
答案 1 :(得分:1)
您需要在用户模型中执行
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();
答案 2 :(得分:1)
事件属于其所有者(用户)
如果您遵循核心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;
这是一种常见情况,您可以根据您的关系类型使用您的逻辑。这是doc。