Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.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

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 在Laravel中检索数据_Php_Laravel_Eloquent - Fatal编程技术网

Php 在Laravel中检索数据

Php 在Laravel中检索数据,php,laravel,eloquent,Php,Laravel,Eloquent,我找不到解决方案如何检索属于活动所在用户的链接 以下是我的模型: 用户模型: 活动模式: 任务模型: 链接模型: 所以,管理员创建了一个属于活动的活动和任务,用户可以启动任务,一旦他们启动任务,他们就可以获得分配给该任务和活动的链接 在这种情况下,我可以轻松统计所有用户链接: $user = User::find(1); echo $user->links->count(); 但我的问题是如何只回应与活动相关的链接 同样:活动有很多任务,任务有很多链接,用户有很多链接 获取仅属于活

我找不到解决方案如何检索属于活动所在用户的链接

以下是我的模型:

用户模型: 活动模式: 任务模型: 链接模型: 所以,管理员创建了一个属于活动的活动和任务,用户可以启动任务,一旦他们启动任务,他们就可以获得分配给该任务和活动的链接

在这种情况下,我可以轻松统计所有用户链接:

$user = User::find(1);
echo $user->links->count();
但我的问题是如何只回应与活动相关的链接

同样:活动有很多任务,任务有很多链接,用户有很多链接

获取仅属于活动活动的用户的链接数

与分析类似:(

每个链接都有许多分析(跟踪点击)

分析模型:

public function links(){
    return $this->belongsTo('Link','link_id');
}

还需要仅为处于活动状态的任务回显链接计数。

首先,如果您有用户的
id,则不需要为其运行查询:

$user=User::find($id); // redundant

// instead
Link::where('user_id', $id)->count();
现在获取活动活动的链接:

Link::whereHas('task', function ($q) {
  $q->whereHas('campaign', function ($q) {
     $q->active(); // or where('status', 'active'); see below
  });
})->where('user_id', $id)->get();

// of course you can start with $user->links()->whereHas ... instead
我的示例涵盖了活动的
范围

// Campaign model
public function scopeActive($query)
{
  $query->where('status', 'active');
}
计数也是如此:

Link::whereHas('task', function ($q) {
  $q->whereHas('campaign', function ($q) {
     $q->active();
  });
})->where('user_id', $id)->count();
您还可以将
whereHas
链包装到范围中:

// Link model
public function scopeOnlyActiveCampaigns($query)
{
  $query->whereHas('task', function ($q) {
    $q->whereHas('campaign', function ($q) {
       $->active();
    });
  });
}

// then simply:
Link::onlyActiveCampaigns()->where('user_id', $id)->count();

正如评论中所述:使用一致的关系名称,这将使你的生活更轻松:

$link->analytic; // collection, better analytics
$analytic->links; // single Link model, better link etc

首先,如果您有用户的
id
,则不需要为其运行查询:

$user=User::find($id); // redundant

// instead
Link::where('user_id', $id)->count();
现在获取活动活动的链接:

Link::whereHas('task', function ($q) {
  $q->whereHas('campaign', function ($q) {
     $q->active(); // or where('status', 'active'); see below
  });
})->where('user_id', $id)->get();

// of course you can start with $user->links()->whereHas ... instead
我的示例涵盖了活动的
范围

// Campaign model
public function scopeActive($query)
{
  $query->where('status', 'active');
}
计数也是如此:

Link::whereHas('task', function ($q) {
  $q->whereHas('campaign', function ($q) {
     $q->active();
  });
})->where('user_id', $id)->count();
您还可以将
whereHas
链包装到范围中:

// Link model
public function scopeOnlyActiveCampaigns($query)
{
  $query->whereHas('task', function ($q) {
    $q->whereHas('campaign', function ($q) {
       $->active();
    });
  });
}

// then simply:
Link::onlyActiveCampaigns()->where('user_id', $id)->count();

正如评论中所述:使用一致的关系名称,这将使你的生活更轻松:

$link->analytic; // collection, better analytics
$analytic->links; // single Link model, better link etc

什么定义了活动活动?在表活动中,我的列状态可以是“活动”或“阻止”。在模型中,您没有使用一致的命名约定定义关系。在plural中,什么定义了活动活动?在表活动中,我的列状态可以是“活动”或“阻止”。您没有使用一致的命名约定定义模型中关系的命名约定。hasMany&hasManyThrough=>复数形式