我知道我可以使用using System;
using Android.App;
using Android.Content;
using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Android.Util;
using Gcm.Client;
namespace Waka.Droid
{
[Activity(Label = "Waka.Droid", Icon = "@drawable/icon", Theme = "@style/MyTheme", MainLauncher = false, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
public static MainActivity instance;
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
instance = this;
global::Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new App());
RegisterWithGCM();
}
private void RegisterWithGCM()
{
// Check to ensure everything's set up right
GcmClient.CheckDevice(this);
GcmClient.CheckManifest(this);
// Register for push notifications
GcmClient.Register(this, Constants.SenderID);
}
}
}
来查询Laravel中的Eloquent关系,如下所示:
count()
if(count($question->answers()))
与answers()
关系的位置:
hasMany
我的问题是,当 public function answers()
{
return $this->hasMany('App\Models\Answer', 'question_id');
}
不是整个集合而是一个模型实例时,我该如何做?
$question
如何使用$question = Question::where('id',$key)->first();
查询上述问题,仅针对该问题查询潜在关系?
我总是得到一个大于零的count()
,即使所选问题没有关联的答案,这意味着我的if块总是运行并返回无保证的count()
值:
null
答案 0 :(得分:2)
由于调用$question->answers()
正在返回QueryBuilder
个实例,因此调用count()
很可能始终返回1
。如果您访问$question->answers
(作为property
而不是method
),或使用完整逻辑$question->answers()->get();
,则应正确返回Collection
,count()
1}}将正确运行:
$question = Question::where('id',$key)->first();
if(count($question->answers) > 0){
// Do something
}
// OR
if(count($question->answers()->get()) > 0){
...
}
根据@maraboc的建议,您还可以使用$question
条款急切加载answers
->with()
:
$question = Question::with(["answers"])->where('id',$key)->first();
但即使在这种情况下,$question->answers()
仍会返回QueryBuilder
个实例,因此请将其property
作为count()
进行访问,以便正常运行。
答案 1 :(得分:0)
由于已经指出count($question->answers())
没有意义,因为$question->answers()
是一个Relation实例,你可以调用它的动态查询方法,但如果你想计算元素,你需要一个集合,即{{1} }。
所以你有两个选择:
$question->answers
count($question->answers)
圆括号