我有一个需要从数据库中获取用户详细信息的应用程序,例如,名字,但是我想为每个用户加入他们在注册时选择的大学,并检查该大学的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/

10-11 01:28