首先,在我的MySQL數據庫,我有一個名爲「用戶」和「users_details」 2個表和它們在關係獲取記錄雄辯Laravel 5
用戶表
ID( PK,AI,INT),用戶名(VARCHAR,UNQ),密碼(VARCHAR), 全稱(VARCHAR)
和users_table
ID(PK,AI,INT),電子郵件(VARCHAR),電話(VARCHAR),地址(VARCHAR),has_record(VARCHAR), USER_ID(INT,FK =參考表 'users.id')
和我的模型綁定。
'用戶' 模式
<?php namespace App;
use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
class User extends Model implements AuthenticatableContract, CanResetPasswordContract {
use Authenticatable, CanResetPassword;
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'users';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['username', 'email', 'password'];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = ['password', 'remember_token'];
public function user_details(){
return $this->hasOne('App\users_details');
}
}
和 'users_details' 模式
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class users_details extends Model {
protected $table = "user_details";
public function ud()
{
return $this->belongsTo('App\User');
}
}
,我知道我可以做像
$data = User::find(1)->with('user_details'); //or
$data = User::find(1)->user_details;
但如何我想'User'表中的全名記錄是'users_table''user_id'外鍵的主要參考表?怎麼做?我試過
$data = users_details::where('has_record', '=', 'no')->with('ud')->get(); //get all the records where column 'has_record' of 'users_details' is equal to 'no'
$data = $data->ud->fullname; //get the fullname
但不幸的是,可悲的是不工作,任何幫助,想法,線索,建議,建議嗎?
UPDATE:
我實現它使用查詢生成器
$test = DB::table('users')
->join('user_details', 'users.id', '=', 'user_details.user_id')
->where('has_record', '=', 'no')
->get();
但有沒有用雄辯的力量的方式我能做到這一點?
除非沒有特定的原因,否則我會建議將所有內容放在用戶表中。如果除了用戶以外的其他內容都有詳細信息,我可以想到擁有「詳細信息」表格的唯一原因是。就目前而言,你只是讓事情變得更加複雜。 – user3158900