草庐IT

关于 eloquent:Laravel 列表与下拉关系

codeneng 2023-03-28 原文

Laravel lists with relationship for a dropdown

我有两张桌子:

课程

  • ID
  • 名称
  • 季节ID
  • 教师编号
  • 日期ID
  • 描述
    ...

course_dates

  • ID
  • course_id
  • 工作日
  • 开始
  • 停止
    ...

第一张表是课程的基本内容。在第二个表中,我只存储课程的日期(即星期一的工作日 1,开始 -> 开始和停止的时间 -> 结束)。课程可以有多个日期。

现在我想为这样的下拉列表创建一个列表:

  • 课程名称(天,从到)
  • 相同的课程名称(另一天,从到到)
  • 另一个课程名称(天,从到到)

我完成一个小辅助函数的那一天的名称。

如何使用访问器操作列表方法的参数?

感谢您的帮助!

课程模型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
    <?php

class Course extends \\Eloquent {

    protected $guarded = ['id', 'created_at', 'updated_at'];

    //Relationship Holidays
    public function holidays()
    {
        return $this->hasMany('Holiday');
    }

    //Relationship Teacher
    public function teacher()
    {
        return $this->belongsTo('Teacher');
    }

    //Relationship User
    public function bookings()
    {
        return $this->hasMany('Booking');
    }

    //Relationship Dates
    public function dates()
    {
        return $this->hasMany('Dates');
    }

    //Accessor for Dates
    public function getWeekdayAttribute()
    {
        //???
    }

    //Validation Rules
    public static $rules = [
        'name'          =>  'required',
        'teacher_id'    =>  'required',
        'description'   =>  'required',
        'room'          =>  'required',
        'price'         =>  array('required', 'regex:/^\\d*(\\,\\d{2})?$/'),
        'maxuser'       =>  'required|numeric',
        'target'        =>  'required'
    ];


    //Custom Attribute Names
    public static $names = [
        'name'          =>  'Kursname',
        'teacher_id'    =>  'Kursleiter',
        'description'   =>  'Beschreibung',
        'room'          =>  'Raum/Ort',
        'price'         =>  'Preis',
        'maxuser'       =>  'Max. Anzahl Teilnehmer',
        'target'        =>  'Zielgruppe'
    ];

    //Change Price Format Get
    public function getPriceAttribute($price)
    {
        return number_format($price, 2, ',', '');
    }

    //Change Price Format Set
    public function setPriceAttribute($price)
    {
        $this->attributes['price'] = str_replace(',', '.', $price);
    }

    //Unserialize Target Get
    public function getTargetAttribute($target)
    {
        return unserialize($target);
    }

    //Serialize Target Set
    public function setTargetAttribute($target)
    {
        $this->attributes['target'] = serialize($target);
    }
}

日期模型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
    <?php

class Dates extends \\Eloquent {

    protected $guarded = ['id', 'created_at', 'updated_at'];

    protected $table = 'course_dates';

    public function courses()
    {
        return $this->belongsTo('Course')->orderBy('name');
    }

    //Validation Rules
    public static $rules = [
        'weekday'   =>  'required',
        'start'     =>  'required|date_format:H:i',
        'stop'       =>  'required|date_format:H:i'
    ];

    //Custom Attribute Names
    public static $names = [
        'weekday'   =>  'Wochentag',
        'start'     =>  'Von',
        'stop'       =>  'Bis'
    ];


}

辅助函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//Display Weekday
function showWeekday($id)
{
    $weekday = array(
        '1' => 'Montag',
        '2' => 'Dienstag',
        '3' => 'Mittwoch',
        '4' => 'Donnerstag',
        '5' => 'Freitag',
        '6' => 'Samstag',
        '0' => 'Sonntag'
    );

    return $weekday[$id];
}

  • 你能告诉我们你已经拥有的代码吗?也可以,您可以使用访问器操作 lists() 的属性。
  • 感谢您的代码。但是,我仍然不清楚这些下拉列表应该是什么样子/它们应该包含哪些数据......
  • 我想要这种格式(例如网球星期一 12:55 - 13:55)。但是使用访问器时,我每次都会获得操纵值,但我只需要它用于下拉菜单。更好的是我手动创建数组。


如果我理解正确的话,可以这样做:

课程日期模型

1
2
3
public function getNameAndTimeAttribute(){
    return $this->course->name . ' ' . $this->attributes['start'] . ' - ' . $this->attributes['stop'];
}

然后:

1
$dropdown = CourseDate::with('course')->get()->lists('nameAndTime', 'id');

  • 我什至不想理解 OP 问题,因为它太不清楚了,但我想你是对的 - 所以只有一件事: getlists 之前,这很好。
  • 为什么需要 get()

有关关于 eloquent:Laravel 列表与下拉关系的更多相关文章

  1. ruby - RVM 使用列表[0] - 2

    是否有类似“RVMuse1”或“RVMuselist[0]”之类的内容而不是键入整个版本号。在任何时候,我们都会看到一个可能包含5个或更多ruby的列表,我们可以轻松地键入一个数字而不是X.X.X。这也有助于rvmgemset。 最佳答案 这在RVM2.0中是可能的=>https://docs.google.com/document/d/1xW9GeEpLOWPcddDg_hOPvK4oeLxJmU3Q5FiCNT7nTAc/edit?usp=sharing-知道链接的任何人都可以发表评论

  2. ruby - Rails 关联 - 同一个类的多个 has_one 关系 - 2

    我的问题的一个例子是体育游戏。一场体育比赛有两支球队,一支主队和一支客队。我的事件记录模型如下:classTeam"Team"has_one:away_team,:class_name=>"Team"end我希望能够通过游戏访问一个团队,例如:Game.find(1).home_team但我收到一个单元化常量错误:Game::team。谁能告诉我我做错了什么?谢谢, 最佳答案 如果Gamehas_one:team那么Rails假设您的teams表有一个game_id列。不过,您想要的是games表有一个team_id列,在这种情况下

  3. [工业相机] 分辨率、精度和公差之间的关系 - 2

    📢博客主页:https://blog.csdn.net/weixin_43197380📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由Loewen丶原创,首发于CSDN,转载注明出处🙉📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨文章预览:一.分辨率(Resolution)1、工业相机的分辨率是如何定义的?2、工业相机的分辨率是如何选择的?二.精度(Accuracy)1、像素精度(PixelAccuracy)2、定位精度和重复定位精度(RepeatPrecision)三.公差(Tolerance)四.课后作业(Post-ClassExercises)视觉行业的初学者,甚至是做了1~2年

  4. Ruby on Rails regexp equals-tilde 与 array include 用于检查选项列表 - 2

    我正在使用Rails3.2.3和Ruby1.9.3p0。我发现我经常需要确定某个字符串是否出现在选项列表中。看来我可以使用Ruby数组.includemethod:或正则表达式equals-tildematchshorthand用竖线分隔选项:就性能而言,一个比另一个好吗?还有更好的方法吗? 最佳答案 总结:Array#include?包含String元素,在接受和拒绝输入时均胜出,对于您的示例只有三个可接受的值。对于要检查的更大的集合,看起来Set#include?和String元素可能会获胜。如何测试我们应该根据经验对此进行测试

  5. ruby-on-rails - 关于 Ruby 的一般问题 - 2

    我在我的rails应用程序中安装了来自github.com的acts_as_versioned插件,但有一段代码我不完全理解,我希望有人能帮我解决这个问题class_eval我知道block内的方法(或任何它是什么)被定义为类内的实例方法,但我在插件的任何地方都找不到定义为常量的CLASS_METHODS,而且我也不确定是什么here,并且有问题的代码从lib/acts_as_versioned.rb的第199行开始。如果有人愿意告诉我这里的内幕,我将不胜感激。谢谢-C 最佳答案 这是一个异端。http://en.wikipedia

  6. ruby - Rails 组合多个 activerecord 关系 - 2

    我想合并多个事件记录关系例如,apple_companies=Company.where("namelike?","%apple%")banana_companies=Company.where("namelike?","%banana%")我想结合这两个关系。不是合并,合并是apple_companies.merge(banana_companies)=>Company.where("namelike?andnamelike?","%apple%","%banana%")我要Company.where("名字像?还是名字像?","%apple%","%banana%")之后,我会写代

  7. Ruby:如何将数组拼接成 Lisp 风格的列表? - 2

    这是我发现自己偶尔想做的事情。假设我有一个参数列表。在Lisp中,我可以像这样`(imaginary-function,@args)为了调用将数组从一个元素转换为正确数量的参数的函数。Ruby中是否有类似的功能?或者我只是在这里使用了一个完全错误的成语? 最佳答案 是的!它被称为splat运算符。a=[1,44]p(*a) 关于Ruby:如何将数组拼接成Lisp风格的列表?,我们在StackOverflow上找到一个类似的问题: https://stackov

  8. ruby-on-rails - Ruby on Rails 将列表拆分或切片为列 - 2

    @locations=Location.all#currentlistingall@locations=Location.slice(5)orLocation.split(5)使用Ruby,我试图将我的列表分成4列,每列限制为5个;然而,切片或拆分似乎都不起作用。知道我可能做错了什么吗?任何帮助是极大的赞赏。 最佳答案 您可能想使用in_groups_of:http://railscasts.com/episodes/28-in-groups-of这是RyanBates在railscast中的示例用法:

  9. ruby-on-rails - Ruby on Rails - has_one 关系,如何检查它是否具有现有关联? - 2

    我有一个简单的问题,与关联有关。我有一个书的模型,它有_onereservation。预订属于_书本。我想在预订Controller的创建方法中确保在预订时没有预订一本书。换句话说,我需要检查该书是否存在任何其他预订。我该怎么做?编辑:Aaa我做到了,感谢大家的提示,学到了一些新东西。当我尝试提供的解决方案时,出现no_method错误或nil_class等。这让我开始思考,我尝试处理的对象根本不存在。Krule给了我使用book.find的想法,所以我尝试使用它。最终我得到了它的工作:book=Book.find_by_id(reservation_params[:book_id])

  10. ruby - 我怎样才能更好地了解/了解更多关于 Ruby 的知识? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?

随机推荐