当前位置: 首页 > 知识库问答 >
问题:

laravel-使用自定义模型函数获取父类别平铺

倪风史
2023-03-14

我已经用下面提到的“parent_id”在category类中定义了父关系,我想用父标题打印category title,比如mens

未定义的属性:Illumb\Database\Eloquent\Relations\BelongsTo::$title

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
    //
    protected $table = 'categories';


    public function parent()
    {
        return $this->belongsTo('App\Category', 'parent_id');
    }   

    public function withParentTitle(): string
    {               
        if($this->parent()){            
            return $this->parent()->title.' > '. $this->title;
        }
        return $this->title;
    }   


}

类别控制

................

namespace App\Http\Controllers;

use App\Category;

class CategoryController extends Controller
{

    public function index(){        
        $categories = Category::get();
        foreach($categories as $category){
            echo $category->withParentTitle();
        }
    }
}

共有3个答案

施阳夏
2023-03-14
public function withParentTitle(): string
    {               
        // Your $this->parent() would always be true, 
        // use $this->parent()->exists() instead
        if($this->parent()->exists()){            
            // $this->parent() refers to the relationship, 
            // you can't get title out of the relationship object, 
            // unless you retrieve it using $this->parent
            return $this->parent->title.' > '. $this->title;
        }
        return $this->title;
    }   
郑博
2023-03-14

您必须在不使用()的情况下进行呼叫,如下所示:

public function withParentTitle(): string
{               
    if($this->parent()){            
        return $this->parent->title.' > '. $this->title;
    }
    return $this->title;
}

因为如果您使用(),您将调用关系作为查询生成器,并且您可以使用其他闭包:

$this->parent()->where('title', 'foo')->first();
阎冠玉
2023-03-14

根据laravel文件https://laravel.com/docs/5.8/eloquent-mutators

您可以通过这种方式使用访问器

public function getParentTitleAttribute(){
  return $this->parent ? $this->parent->title . '>' . $this->title : $this->title;
}

然后调用$category-

 类似资料:
  • 我可以使用自定义字段值获取数据吗?我的是,字段名是。那么,如何使用获取所有数据呢? 代码如下: 此代码不起作用。

  • 我在我的wordpress网站上创建了一个自定义帖子类型“Portfolio”,还为这个自定义帖子类型创建了一个类别部分,其中包含类别slug“PortCate”。 “Portfolio”帖子的永久链接如下: mysite.com/portfolio/post-name/ 但是类别url是 mysite.com/port-cate/category-slug/ 我的问题是:如何为这种帖子类型创建分

  • 主要内容:操作整个数据表,操作行或列,操作单一元素如果想要应用自定义的函数,或者把其他库中的函数应用到 Pandas 对象中,有以下三种方法: 1) 操作整个 DataFrame 的函数:pipe() 2) 操作行或者列的函数:apply() 3) 操作单一元素的函数:applymap() 如何从上述函数中选择适合的函数,这取决于函数的操作对象。下面介绍了三种方法的使用。 操作整个数据表 通过给 pipe() 函数传递一个自定义函数和适当数量的参

  • 我试图得到一个所有api_token的数组(这是我的模型用户的一个变量),但是做用户:所有()太慢了请求。 有没有办法从Laravel中的模型中获得某个值的数组? 我的代码:

  • 如果您是一位经验丰富的ML开发人员,而且ML Kit的预训练的模型不能满足您的需求,您可以通过ML Kit使用定 的TensorFlow Lite模型。 使用Firebase托管您的TensorFlow Lite模型或将其与您的应用程序打包在一起。然后,使用ML Kit SDK来使用您的自定义模型的最佳版本构建应用。如果您使用Firebase托管您的模型,ML Kit会自动更新您的用户的所用版本。

  • 试图弄清楚你将如何着手检查Woocommerce类别是否为父类别。 我有一个类别和一个子类别,在我的Woocommerce模板中,有两个单独的布局HTML。父类别为1,子类别为1。 我目前正在使用这个: 但是,如果它可以在不手动输入所有父类别的情况下进行检查,则会更容易。 还有,有没有办法从子类别或子类别产品页面链接到主父类别页面?