我有两个模型,用户模型和任务模型。
Task.php:
Dataset<Row> dfSalesTotals = dfSaledetails
.join(dfProducts, dfSaledetails.col("product_id").equalTo(dfProducts.col("product_id")))
.groupBy(dfSaledetails.col("product_id"))
.agg(sum(dfSaledetails.col("amount")).alias("total_amount"))
.select(dfProducts.col("product_name"), col("total_amount"));
dfSalesTotals.show();
和User.php:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Task extends Model
{
//
protected $fillable=['text','title','user_id','completed','created_by'];
public function users()
{
return $this->belongsTo(User::class, 'id');
}
}
我的目标是将每个任务分配给一个用户,以便我可以检索创建该任务的用户的名称。
users表具有id和name列。任务表还具有一个id列。
那么如何获得使用雄辩的关系创建任务的用户的名称呢?
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function tasks()
{
return $this->hasMany(Task::class);
}
}
给予:
App\User::first()->tasks
答案 0 :(得分:1)
为解决此问题,我将此功能添加到Task.php
public function users()
{
return $this->belongsTo(User::class, 'created_by');
}
我不应该使用“ id”作为外键。并删除了
public function tasks()
{
return $this->hasMany(Task::class);
}
来自用户模型。
答案 1 :(得分:0)
您说"My objective here is to have every task assigned to a user..."
,所以我相信一个任务仅属于一个用户。如果真是这样,那的确是One to Many关系。您应该在user()
模型上致电users()
而不是Task
:
public function user()
{
return $this->belongsTo(User::class);
}
答案 2 :(得分:0)
问题可能出在您的任务模型中
public function users()
{
return $this->belongsTo(User::class, 'user_id');
}
我看到了documentation和Laravel使用foreign_key
作为第二个参数,而不是primary_key
作为第二个参数