Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将关系直接附加到对象上?_Php_Laravel - Fatal编程技术网

Php 如何将关系直接附加到对象上?

Php 如何将关系直接附加到对象上?,php,laravel,Php,Laravel,我不知道我是否正确地表述了这个问题,但不管怎样 因此,当我在控制器上使用store方法时,我在同一个请求中发送两个字段name和fr。 在我的控制器中,我希望能够创建模型室并将其关系附加到模型室。当我尝试下面的代码时,它告诉我我没有提供房间id。有没有自动的方法来实现这一点 public function store(RoomRequest $request) { $request = $request->validated(); $room

我不知道我是否正确地表述了这个问题,但不管怎样

因此,当我在控制器上使用store方法时,我在同一个请求中发送两个字段name和fr。 在我的控制器中,我希望能够创建模型室并将其关系附加到模型室。当我尝试下面的代码时,它告诉我我没有提供房间id。有没有自动的方法来实现这一点

    public function store(RoomRequest $request)
    {
        $request = $request->validated();
        $room = new Room;
        $room->create($request);
        $room->translations()->create($request);
        return success('');
    }
谢谢你的帮助

附言:如果有一种更简洁的方法来编写这部分代码,我会很高兴听到如何改进它

谢谢大家!

您可以这样做:

Room::create($request->only(['name']))->translations()->create($request->only(['fr']));
只需检查输入的名称是否正确即可

此外,在房间模型类中,如果每个房间都有多种语言,则“翻译关系”应为“多语言”,如果每个房间没有多个翻译,则可以为“翻译语言”添加一列

<?php

namespace App;

use Illuminate\Http\Request;
use Illuminate\Database\Eloquent\Model;
use App\RoomTranslation;

class Room extends Model
{

    protected $fillable = ['name'];

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

    public function translations() {
        return $this->hasOne('App\RoomTranslation');
    }
}

Room::create($request->only(['name']))->translations()->create($request->only(['fr']));