【问题标题】:Laravel model relationships Insert to DBLaravel 模型关系插入到数据库
【发布时间】:2019-02-13 22:50:16
【问题描述】:

我正在尝试将 user_id 和 task_id 插入到 task_cmets 表中,使用纯粹的雄辩关系。

这会添加评论和只是 user_id

public function store(Request $request, Task $task)
{

    Auth::user()->comments()->create( $request->all() );

}

这会添加评论和task_id

public function store(Request $request, Task $task)
{

    $task->comment()->create( $request->all() );

}

但我无法让它同时添加 user_id 和 task_id。我试过了

public function store(Request $request, Task $task)
{

    Auth::user()->comments()->$task->comment()->create( $request->all() );

}

但是这会引发错误...请问有什么想法吗?谢谢。

【问题讨论】:

  • 抛出的错误是什么?
  • 未定义属性:Illuminate\Database\Eloquent\Relations\HasMany::${"id":22,"name":"Task Changed Xx","date":"11\/12\ /2018","user_id":1,"created_at":"2019-02-11 12:38:54","updated_at":"2019-02-13 10:20:25"}
  • 试试这个 Auth::user()->cmets()->{$task}->comment()->create( $request->all() );
  • 谢谢,但仍然收到错误 Undefined property: Illuminate\Database\Eloquent\Relations\HasMany...
  • 还在 HasMany::$ 或其他地方吗?

标签: laravel eloquent


【解决方案1】:
public function store(Request $request, Task $task)
{
    Auth::user()->comments()->$task->comment()->create( $request->all() );
                             // ^ using variable seems wrong.
}

我会像这样使用它,

$data = $request->all();
$data['user_id'] = Auth::user()->id

$task->comment()->create($data);

【讨论】:

    【解决方案2】:

    不是这个

    public function store(Request $request, Task $task)
    {
    
    Auth::user()->comments()->$task->comment()->create( $request->all() );
    
    }
    

    试试这个,这只有在任务和用户之间有关系时才有效

    public function store(Request $request, Task $task)
    {
    
    $request->user()->task->comment()->create( $request->all() );
    
    }
    

    这些是我的关系

    用户模型

    public function task()
    {
        return $this->hasMany('App\Task');
    }
    
    
    public function comments()
    {
    
        return $this->hasMany('App\TaskComment');
    
    }
    

    任务模型

    public function user()
    {
        return $this->belongsTo('App\User');
    }
    
    
    public function comment()
    {
    
        return $this->hasMany('App\TaskComment');
    
    }
    

    任务评论模型

    public function task()
    {
    
        return $this->belongsTo('App\Task');
    
    }
    
    
    public function user()
    {
    
        return $this->belongsTo('App\User');
    
    }
    

    【讨论】:

    • 干杯碧玉,虽然我得到了这个错误 - 方法注释不存在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多