2016-10-13 94 views
0

我使用laravel雄辯模型,所以有三個表tempsocials,tempusers和tempdevices。所以一個用戶可以有多個設備和多個社交帳戶。 我創建了一個模型,上述三個表,並試圖保持關係就像下面使用laravel無法保持一對多的關係eloquent 5.3

這是我Tempuser型號:

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Tempuser extends Model 
{ 
    public function tempsocials(){ 
     return $this->hasMany('App\Tempsocial'); 
    } 

    public function tempdevices(){ 
     return $this->hasMany('App\Tempdevice'); 
    } 
} 

這是我TEMPDEVICE型號:

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Tempdevice extends Model 
{ 
    public function tempusers(){ 

     return $this->belongsTo('App\Tempuser'); 
    } 
} 

而這一個是最後一個Tempsocial模型:

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Tempsocial extends Model 
{ 
    public function tempusers(){ 

     return $this->belongsTo('App\Tempuser'); 
    } 
} 

現在,這是我的控制,我想以檢索所有設備和特定用戶

namespace App\Http\Controllers; 

    use Illuminate\Http\Request; 
    use Illuminate\Database\Eloquent\Collection; 
    use App\Http\Requests; 
    use App\tempLogin; 
    use App\Tempdevice; 
    use App\Tempuser; 
    use App\Tempsocial; 

    class loginController extends Controller 
    { 
     public function check_credentials(Request $request){ 

      $count=0; 

      if($request->header('content-type')=='application/json'){ 


      $temp=new Tempuser; 
      $devices = $temp->tempdevices(); 
      return $devices; 

      } 
     } 
    } 

的社交帳戶,但我得到以下錯誤: 「類照亮\數據庫對象\ Eloquent \ Relations \ HasMany無法轉換爲字符串「

回答

0

您正在製作新的Tempuser(),它沒有標識,因此您的關係沒有按預期返回任何內容,您需要將ID傳遞給方法,並且無線你可以做這樣的事情:

Tempuser::find($id); 

然後這將返回一個實際的模型,而不是創建一個新的。

此外,因爲當你調用->tempdevices()作爲函數會返回一個查詢生成器,而不是當你做->tempdevices它會返回一個集合,改變這樣的:

$devices = $temp->tempdevices; 

另外,如果你希望一個JSON響應(如果那不是你可以忽略這部分的情況下),可能會更好也做說明它在你的回報:

return response()->json($devices); 
+0

我所做的更改,你建議,但我仍然有一個空白的JSON響應。 – sam

+0

然後你的if語句返回false,因爲那不會給你任何返回值,如果你刪除if語句會發生什麼? – Neat

+0

爲什麼我需要$ request-> ajax()。對不起,但我不知道。其實我是一個初學者。 – sam