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

Laravel上的透视表有问题

隆扬
2023-03-14

我有一个有两个透视表的表单。其中一个工作很好,但我似乎不能使第二个工作,尽管他们是相当相似的。不起作用的是一个名为'photos'的图像表和名为'releases'的表单上载。我使用“photo_id”和一个“release_id”字段将数据透视表称为“photo_releases”。

数据库透视表

下面是发布模式

    class Release extends Model
    {
        public function photos()
        {
            return $this->belongsToMany('App\Photo', 'photo_releases', 'release_id', 'photo_id');
        }
    }

和照片模式

    class Photo extends Model
    {
        public function releases()
        {
            return $this->belongsToMany('App\Release', 'photo_releases', 'photo_id', 'release_id');
        }
    }

和ReleaseController

public function store(ReleasesCreateRequest $request)
    {
        $input = $request->all();

        $user = Auth::user();

        if ($file = $request->file('photo_01')) {
            $file_name = preg_replace("/[^a-zA-Z0-9.]/", "", $file->getClientOriginalName());
            $name = time() . 'photo_01' . $file_name;
            $file->move('images', $name);
            $input['photo_01'] = $name;
            $photo = new Photo();
            $photo->url = $input['photo_01'];
            $photo->save();
        }

        $release = Release::create($request->except('release_id'));

        dd($request->except('release_id'), $request->get('photo_id', []), $request->get('artiste_id', []));
        $release->photos()->attach($request->get('photo_id', []));
        $release->artistes()->attach($request->get('artiste_id', []));

        return redirect('/admin06000/releases');
    }

此函数中使用了两个透视表。使用

“$release->artistes()->attach($request->get('artiste_id',[]));”

正在正常工作,但照片不是。url被记录在正确的数据库中,图像上传良好,但数据透视表没有更新。如果有人能帮上忙,它将会得到很大的支持。

共有1个答案

孔冥夜
2023-03-14

如果需要更改“关系中的选择”,请尝试此操作

 with('photos')



 with(['photos'=>function($query){$query->where(....)->get();}])...
 use Image;
 use Illuminate\Support\Facades\Input;
 ...
 public function store(ReleasesCreateRequest $request)
 {
             $input = $request->all();   
             $user = Auth::user();

             if ($file = $request->file('photo_01'))
             {
                 $image= Input::file('photo_01');
                 $name = time().'photo_01'.'.'.$image->getClientOriginalExtension();
                 $path=public_path('/YourPath/'.$name);
                 Image::make($image->getRealPath())->save($path);


                 $photo = new Photo();
                 $photo->url = '/YourPath/'.$name;
                 $photo->save();
             }

             $release = Release::create
             ([
              'release_field'=>$amount,
              'release_field2'=>$amount2,
               ....
             ]); 

             $release->with('photos')->with(artistes)->get();



         }```
 类似资料:
  • 我试图创建一个关系,通过一个名为年级的模型访问一个名为注释的表,通过年级中的学生加载 年级模型和学生模型都属于其他模型 根据我的理解,不可能访问需要透视表的hasManyThrough关系(注释没有年级标识符,只有学生标识符) 我为Laravel 4@HasManyThrough找到了这些函数,它们具有一对多关系,但它给了我一个错误类“App\illumb\Database\Eloquent\Re

  • 我有三张桌子: 类别(id、名称) 类别赛(类别赛id,锦标赛id)-- Category是可用类别列表Category_Tornament是管理员配置的类别列表Category_Tornament用户是用户已注册的类别 要获得锦标赛中的所有类别,我可以使用以下工具轻松完成: 在竞赛模型中定义归属关系 我不知道如何定义与上一个表的关系。 我需要的是用户单击几个类别,我可以运行如下操作: 我应该在哪

  • 事实上,我的问题很简单,但我找不到任何答案。 我使用的是Laravel Elotent,我有3张桌子: 一个数据透视表叫做: 我已经从我的公司对象中获得了,我正在尝试获取

  • 我有一个问题,正在寻找一个很好的解决方案。 我有这些db表: 游戏对象 游戏对象属性 游戏\对象\游戏\对象\属性(轴) 游戏对象。php: GameObjectAttribute.php: 现在,我试图获得所有GameObjectType的GameObject,并用透视列值过滤结果。 我在这里使用了一个连接,但是有没有办法用雄辩的关系来做呢? 这将返回给我所有“军队”类型的游戏对象: “game

  • 我想不出如何雄辩地处理这件事。我有一个多对多的关系,需要分配给它一对一的关系。 下面是我设计的最简单形式的基本数据库结构: 每个帐户都属于多个代理。 每个代理人都有许多账户。 每个Account_Agent(多对多数据透视表)属于收费。 我如何在雄辩的模型中定义第三种关系? 我希望能够获得如下(或类似)的“账户代理”费用: 谢谢,希望我的问题很清楚。

  • 在我的Laravel应用程序中,我有三个数据库表,分别称为users、projects和roles。它们之间存在m:n关系,所以我也有一个称为PROJECT_USER_ROLE的透视表。透视表包含user_id、project_id和role_id列。请参见MySQL工作台的屏幕截图。 我的用户、项目和角色模型得到了如下定义的归属关系: 现在我可以很容易地获得通过身份验证的用户的项目: 对此的回应