there are two tables,Task and Report
Task(id,name,latest_report_id);
Report(id,content,feedback,task_id);
one task has many report but it only has one latest report.I wanna how can I get this hasOne relationship in Phalcon 4.0
Thanks.
there are two tables,Task and Report
Task(id,name,latest_report_id);
Report(id,content,feedback,task_id);
one task has many report but it only has one latest report.I wanna how can I get this hasOne relationship in Phalcon 4.0
Thanks.
I've never done this, but according to the documentation, you can use conditional relationships. When you set up your relationships in Task:
$this->hasMany("report_id", Report::class, "id");// This is the standard one-to-many
$this->hasMany(
"report_id",
Report::class,
"id",
"params" => [
"order"=>"date_entered DESC",
"limit"=>1
],
"alias" => "LatestReport"
);
This assumes date_entered is the field in the report table you can use to determine which report is the "latest".
https://docs.phalcon.io/4.0/en/db-models-relationships#conditionals
you didn't mention the database engine but in case its mysql, you might in the future set up the relations before making the models and use the Phalcon's cli tool (Devtools) and will setup the relationship in the models for you
to get the latest report from the Task model add this relation in Task model file
$this->belongsTo('latest_report_id', 'Report', 'id', ['alias' => 'latestReport']);
this would lookup Report table using findFirst with id = latest_report_id condition
if this is not the case please update the question with more details