我正试图让这种关系正常运作。到目前为止,我已经设法通过json“获得”关系,但我无法使用它。
标题模型:
public function favorite()
{
if(auth()->check()){
return $this->hasOne('App\Models\Titles\UserTitle')->where('user_id', auth()->user()->id);
}
return $this->hasOne('App\Models\Titles\UserTitle');
}
Knockoutjs脚本,如果您需要我,我可以提供其余的代码:
handleLists: function(item, titleId) {
var self = app.viewModels.titles.index,
alreadyAdded = self[item]();
app.utils.ajax({
url: alreadyAdded ? vars.urls.baseUrl + '/lists/remove' : vars.urls.baseUrl + '/lists/add',
data: ko.toJSON({ _token: vars.token, list_name: item, title_id: titleId }),
success: function(data) {
if (alreadyAdded) {
app.utils.noty(data, 'info');
self[item](false);
} else {
app.utils.noty(data, 'success');
self[item](true);
}
}
})
},
完整的Knockout脚本:http://pastebin.com/fMN5ha1j
我在视图中专门使用此代码。它在data-bind
的“foreach:”参数下提供 <div id="favorite" class="snippet" data-bind="click: $root.handleLists.bind($data, 'favorite', $data.id)">
<span data-bind="if: favorite">
<i class="fa fa-heart"></i>
</span>
<span data-bind="ifnot: favorite">
<i class="fa fa-heart-o"></i>
</span>
</div>
完整视图:http://pastebin.com/rGa2QhJY
if:收藏夹或ifnot:收藏夹不起作用
这是一个示例json格式,其关系为:http://pastebin.com/UaZVg227