我正在使用laravel eloquent模型,因此有三个表tempsocials,tempusers和tempdevices。因此,一个用户可以拥有多个设备和多个社交帐户。 我为上面的三个表创建了一个模型,并试图保持之间的关系,如下面的
这是我的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;
}
}
}
但是我得到了以下错误:
类Illuminate \ Database \ Eloquent \ Relations \ HasMany的对象可以 不能转换为字符串
答案 0 :(得分:0)
你正在创建一个新的Tempuser()
,它没有id,所以你的关系没有按预期返回任何内容,你需要将id传递给方法,并且使用该id可以执行以下操作:
Tempuser::find($id);
然后,这将返回一个实际模型,而不是创建一个新模型。
另外,因为当您将->tempdevices()
作为函数调用时,它将返回一个查询构建器,而当您执行->tempdevices
时,它将返回一个集合,将其更改为:
$devices = $temp->tempdevices;
此外,如果你期望一个json响应(如果不是这种情况你可以忽略这部分),那么最好还是在你的回复中说明:
return response()->json($devices);