如何在Laravel框架中使用Eloquent或Fluent选择随机行?
我知道通过使用SQL,您可以通过RAND()进行排序.但是,我想获取随机行而不计算初始查询之前的记录数.
有任何想法吗?
这是我使用流畅查询构建器的查询.
$query = DB::table('category_issue')
->select('issues.*')
->where('category_id', '=', 1)
->join('issues', 'category_issue.issue_id', '=', 'issues.id')
->left_join('issue_subscriptions', 'issues.id', '=', 'issue_subscriptions.issue_id')
->group_by('issues.id')
->order_by(DB::raw('COUNT(issue_subscriptions.issue_id)'), 'desc')
->get();
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我通过连接表中的计数进行排序.这工作正常.但是,我希望这个计数随我的选择而返回.
这是我的原始续集查询,工作正常.
Select issues.*, COUNT(issue_subscriptions.issue_id) AS followers
FROM category_issue JOIN Issues ON category_issue.issue_id = issues.id
LEFT JOIN issue_subscriptions ON issues.id = issue_subscriptions.issue_id
WHERE category_issue.category_id = 1
GROUP BY issues.id
ORDER BY followers DESC
Run Code Online (Sandbox Code Playgroud)
如何使用Laravel的流畅查询构建器进行此选择?我知道我可以使用原始的SQL查询但我想尽可能避免这种情况.任何帮助将不胜感激,提前谢谢!
我需要更新所有行的一个数据库,以便在某一领域的所有他们等于单个值.这是一个例子.
假设我的数据库表是这样的:
id | data | confirmed
1 | someData | 0
2 | someData | 1
3 | someData | 0
Run Code Online (Sandbox Code Playgroud)
我想执行一个查询,将每行的确认字段设置为1.
我可以这样做:
$rows = MyModel::where('confirmed', '=', '0')->get();
foreach($rows as $row) {
$row->confirmed = 0;
$row->save();
}
Run Code Online (Sandbox Code Playgroud)
但似乎会有更好的方法吗?单个查询只会说"将每行'确认'字段设置为1".
Laravel的Eloquent/Fluent中是否存在这样的查询?
我有两个POCO课程
public class Order
{
int id;
string code;
int? quotationId; //it is foreign key
public int Id{get;set;}
public string Code{get;set;}
public int? QuotationId{get;set;}
Quotation quotation;
public virtual Quotation Quotation { get; set; }
....
}
public class Quotation
{
int Id;
string Code;
public int Id{get;set;}
public string Code{get;set;}
Order order;
public virtual Order Order { get; set; }
....
}
Run Code Online (Sandbox Code Playgroud)
每个订单可以由一个或零引号组成,每个报价可能会导致一个订单,所以我有一个"一个或零"到"一个或零"关系,我怎么能在EF代码中首先通过流畅的API实现它?
c# entity-relationship entity-framework fluent ef-code-first
我刚刚切换到Fluent NHibernate,我遇到了一个问题,但没有找到任何相关信息.
这是案例:
public class Field : DomainObject, IField
{
public Field()
{
}
public virtual string Name { get; set; }
public virtual string ContactPerson { get; set; }
public virtual bool Private { get; set; }
public virtual IAddress Address { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
IAddress是由名为Address的类实现的接口
public class Address : DomainObject, IAddress
{
public Address()
{
}
public virtual string City { get; set; }
public virtual string Country { get; set; }
public virtual string PostalCode { …Run Code Online (Sandbox Code Playgroud) 我想在我的OrderAddress模型中两次引用该Order模型; 曾经作为一个ShippingAddress和一个作为一个BillingAdress.
另一方面,我希望我的OrderAddress模型有一个列表OrderAddresses.
public enum AddressType
{
Billing,
Shipping,
Contact
}
public class OrderAddress : BaseModel
{
public AddressType AddressType { get; set; }
public bool IsPrimary { get; set; }
public string Address { get; set; }
public string CityStateZip { get; set; }
public string ContactName { get; set; }
public string PhoneNumber { get; set; }
public string FaxNumber { get; set; …Run Code Online (Sandbox Code Playgroud) 在表中创建新列时,可以使用 - > after('列名称)来指示它的去向.如何创建按我想要的正确顺序重新排序列的迁移?
有没有人有一个例子如何设置和哪些实体缓存在流畅的nhibernate.两者都使用流畅的映射和自动映射?
同样的实体关系,一对多和多对多?
鉴于以下场景,我希望使用Fluent NHibernate将类型层次结构映射到数据库模式.
我正在使用NHibernate 2.0
键入层次结构
public abstract class Item
{
public virtual int ItemId { get; set; }
public virtual string ItemType { get; set; }
public virtual string FieldA { get; set; }
}
public abstract class SubItem : Item
{
public virtual string FieldB { get; set; }
}
public class ConcreteItemX : SubItem
{
public virtual string FieldC { get; set; }
}
public class ConcreteItemY : Item
{
public virtual string FieldD { get; set; } …Run Code Online (Sandbox Code Playgroud) fluent ×10
c# ×4
eloquent ×4
laravel ×3
nhibernate ×3
mapping ×2
activerecord ×1
asp.net-mvc ×1
caching ×1
foreign-keys ×1
interface ×1
laravel-3 ×1
laravel-4 ×1
mysql ×1
php ×1
polymorphism ×1
types ×1