我在名为Partner
的类中有一个执行此操作的方法:
$commissionAmount = $subscriptionRevenue * $this->connectStatus()->first()->margin;
connectStatus
(同样在Partner
类)方法是:
public function connectStatus($date = false)
{
$lastSnapshot = $this->lastSnapshot($date);
if ($lastSnapshot) {
$subscribed = $lastSnapshot->cum_subscribed;
} else {
$subscribed = 0;
}
return $this->contract()
->whereRaw("{$subscribed} BETWEEN connections_from AND connections_to");
}
contract
方法(也在Partner
类中)
public function contract()
{
return $this->hasMany(PartnerConnectContract::class, 'partner_id');
}
我的代码在connectStatus
方法失败:
return $this->contract()
->whereRaw("{$subscribed} BETWEEN connections_from AND connections_to");
有错误:
Relationship method must return an object of type Illuminate\Database\Eloquent\Relations\Relation
感谢任何帮助。
答案 0 :(得分:1)
我的问题是使用BETWEEN
进行integer
比较。这解决了它。
public function connectStatus($date = false)
{
$lastSnapshot = $this->lastSnapshot($date);
if ($lastSnapshot) {
$subscribed = $lastSnapshot->cum_subscribed;
} else {
$subscribed = 0;
}
return $this->contract()
->where('connections_from', '<=', $subscribed)
->where('connections_to', '>=' , $subscribed)
->first();
}
答案 1 :(得分:0)
我们知道方法connectStatus()
肯定不会返回Relation
个对象。
这个怎么样:
// Changed the method name
public function getConnectStatusAttribute()
{
// ... your code
}
并称之为:
$commissionAmount = $subscriptionRevenue * $this->connect_status->first()->margin;