我有一个需要从数据库中获取用户详细信息的应用程序,例如,名字,但是我想为每个用户加入他们在注册时选择的大学,并检查该大学的ID是否与另一个外部ID相匹配。如果为true,则返回1或0;否则为false。我试着想出一个解决方案,但是我遇到了错误。
到目前为止,我的查询:
DB::table('users')->select('users.first_name', 'universities.name', 'universities.state')
->where('users.id', '!=', Auth::user()->id)
->join('universities', function ($join) {
$join->on('users.university_id', '=', 'universities.id')
->select(DB::raw('count(universities.id) as state'))
->where('universities.id', '=', '$theExternalID')
->groupBy('users.university_id');
})
->get();
上面的查询仍然会导致错误。请帮忙!
最佳答案
假设您与用户和大学之间存在一对一的关系。
用户模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class University extends Model
{
/**
* Get the University that is associated with the user.
*/
public function university()
{
return $this->belongsTo('App\University');
}
}
大学模式:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class University extends Model
{
/**
* Get the users for the university.
*/
public function users()
{
return $this->hasMany('App\User');
}
}
然后,您可以查询用户与匹配外部ID的大学的关联位置:
User::university()->where('university_id', $theExternalID)->get();
关于mysql - 当他们拥有特定大学时,如何获得用户结果并返回1或0?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46516108/