当前位置: 首页 > 知识库问答 >
问题:

无法在使用laravel 5.3的雄辩中保持一对多的关系

陶俊晤
2023-03-14

我使用的是laravel雄辩模型,所以有三个表tempsocials、tempusers和tempdevices。因此,一个用户可以拥有多个设备和多个社交帐户。我为上表中的三个创建了一个模型,并试图保持它们之间的关系,如下所示

这是我的用户模型:

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;

          }
       }
  }

但我犯了以下错误:

类的对象照明\数据库\雄辩\关系\Has很多不能转换为字符串

共有1个答案

韦高阳
2023-03-14

您正在创建一个新的Tempuser(),它没有id,因此您的关系不会按预期返回任何内容,您需要将id传递给该方法,并使用该id执行以下操作:

Tempuser::find($id);

这将返回一个实际模型,而不是创建一个新模型

也因为当你调用-

$devices = $temp->tempdevices;

此外,如果您希望得到json响应(如果不是这样的话,您可以忽略这一部分),那么最好在您的返回中通过执行以下操作来声明:

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

 类似资料:
  • 我刚刚开始学习LaravelV3,我试图通过创建一个博客来了解eloquent的一对多关系。我的帖子与类别有多对一的关系(每个帖子都链接到一个类别)。 我有以下表格和以下字段: 帖子:id、标题、正文、创建日期、类别id 类别:id、名称 我有以下两种型号: 我想出了如何通过传递类别id来获得所有帖子: 我只是需要帮助,找出如何获得所有的职位,并得到他们的更正类别。因此,在视图中的一天结束时,我可

  • 我有帖子表和评论表。我想得到所有的帖子与它的评论和以下返回只是帖子有评论: 更新 例如 ID帖 1个职位1 2后2 id post\u id评论 1萨姆勒大学评论 Post::with('comments')只返回有注释的帖子,它只返回第一篇帖子,因为第二篇帖子没有注释,我想获取所有帖子(有注释或没有注释)

  • 我有三个模型用户,电子邮件和电话和数据库表用户,电子邮件和电话与下列列提到。 现在,我在用户模型中使用以下函数,使用雄辩的ORM一对多关系建立用户与电子邮件和电话的关系 我想知道有必要使用hasMany()方法两次,或者有其他更好的方法吗?

  • 我正在使用Laravel 5创建一个博客,但我对多对多(通过透视表)关系有一个奇怪的问题。我的DB设置如下: 文章表: id|bigint|20|PK|不为空|自动增量 title|varchar|255|不为空 body|text|不为空 category_id|bigint|20|不为空 created_at|时间戳|不空 updated_at|时间戳|非空 已发布|布尔值|非空 delete

  • 我使用的是Laravel 5.4,其模型和表格结构如下: 一个用户可以有多个账户 一个帐号可以被多个用户共享 每个账户有多个持有量 因此,用户通过他们的许多帐户间接拥有许多资产。 我需要帮助在用户模型上定义一个称为“持有量”的关系,以获得适用于用户的所有持有量(基于他们所链接的账户)。 我尝试了很多不同的东西,在谷歌上花了很长时间。我可以接近BelongToMany和hasManyThrough,

  • 我有一个表事务与复合主键id,Nom,日期和一个表Cour与Nom作为主键和一个事务有关一个Cour。 我怎样才能得到一个有口才关系的特定交易的课程?